我有一个SOAP网络服务,我试图测试,但无法得到任何工作。我确实可以访问服务的代码,尝试从SoapUI调用,VS的服务引用,以及滚动我自己的XML,但都无济于事。
无论我做什么,我都会收到此错误:
Microsoft.Web.Services3.Security.SecurityFault:最终收件人的标头http://schemas.xmlsoap.org/ws/2004/08/addressing:Action是必需的,但邮件中不存在。
以下是尝试使用Visual Studio生成的服务引用(指向.asmx)的相关代码。如你所见,没有任何有趣的事情发生...... 控制台应用:
Magi.ServiceSoapClient client = new Magi.ServiceSoapClient();
string magiVersion = "1.2";
string returnXml = string.Empty;
client.Open();
try
{
client.CheckPricing(magiVersion, ref returnXml);
}
catch (Exception) { }
Console.Write(returnXml);
Console.Read();
client.Close();
VS在Reference.cs中生成代码
// CODEGEN: Generating message contract since the wrapper namespace (http://www.company.com/product/2) of message CheckPricingRequest does not match the default value (http://www.company.com/product/2/ws/)
[System.ServiceModel.OperationContractAttribute(Action="http://www.company.com/product/2/ws/wsdl/Service.wsdl", ReplyAction="*")]
magi_ws_tester.Magi.CheckPricingResponse CheckPricing(magi_ws_tester.Magi.CheckPricingRequest request);
我尝试过以任何我能找到的方式附加Header,并尝试使用SoapUI的WS-A功能,但是无法解决这个问题。
要注意:导航到.asmx或asmx?浏览器中的WSDL工作正常,VS和SoapUI按预期捕获服务的详细信息和方法。