只有在测试服务器上部署ASMX Web服务时,我才会遇到一个奇怪的问题。我有一个简单方法的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客户端调用此方法时,出现以下错误:
引发的抓住SoapException System.Web.Services.Protocols :: SoapHttpClientProtocol.ReadResponse
服务器无法识别HTTP标头SOAPAction的值: http://tempri.org/GetDeviceSyncByCategoryAndSyncStatus
我看过很多SO文章并尝试删除临时ASP Net文件夹并更新网络参考 - 这些都不起作用(例如这些here)。
有没有人有任何想法?
答案 0 :(得分:5)
管理以找出问题所在。很简单的解决方案如果你在几个小时后回来,你就会更明智地思考!
我的客户端app.config指向错误的ASMX文件,因此显然运行时正确地发现该特定Web服务无法识别此操作。
如果有人遇到类似的问题,一个非常简单的检查是确保您实际指向所需的ASMX Web服务,并且您的客户端中的Web引用是最新的。
当然,同意John的评论 - 如果您有选择,请坚持使用WCF或ASP.NET Web API。