只有在测试服务器上部署 ASMX Web 服务时,我才会遇到一个奇怪的问题。我有一个带有一种简单方法的网络服务:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class HarmonyCentralWebClassicService : System.Web.Services.WebService
{
[WebMethod]
public List<DeviceSync> GetDeviceSyncByCategoryAndSyncStatus(DeviceSyncCategoryId categoryId, DeviceSyncStatusId syncStatusId)
{
// Do something and return a list
return new List<DeviceSync>();
}
}
部署到测试服务器后,当我从另一台计算机上的 .NET 客户端调用此方法时,出现以下错误:
Caught SoapException thrown by System.Web.Services.Protocols::SoapHttpClientProtocol.ReadResponse
Server did not recognize the value of HTTP Header SOAPAction: http://tempri.org/GetDeviceSyncByCategoryAndSyncStatus
我看过很多 SO 文章,并尝试删除临时 ASP Net 文件夹并更新 Web 引用 - 这些都不起作用(例如这些 here )。
有人知道吗?
最佳答案
设法找出问题所在。非常简单的解决方案。只是表明如果您几个小时后回来,您的想法会更明智!
我的客户端 app.config 指向错误的 ASMX 文件,因此显然运行时正确地观察到该特定 Web 服务无法识别此操作。
如果有人遇到类似的问题,一个非常简单的检查就是确保您确实指向所需的 ASMX Web 服务,并且客户端中的 Web 引用是最新的。
当然,同意 John 的评论 - 如果您有选择,请坚持使用 WCF 或 ASP.NET Web API。
关于asp.net - ASMX 网络服务 "Server did not recognize the value of HTTP Header SOAPAction",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27491517/