asp.net - Web 服务在 SOAPAction 中添加额外的正斜杠

标签 asp.net vb.net web-services soap soap-client

我正在使用 SoapUI 来测试将由 Java 客户端应用程序使用的 .Net Web 服务。

当我将 Web 服务连接到 SoapUI 但更新 WSDL 位置并调用预设测试脚本之一时,Web 服务失败并显示以下代码

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Client</faultcode>
         <faultstring>System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: urn:mycode:us:gu:das:supplierengagement:v02:SupplierEngagement:/AppointSupplier.
   at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
   at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
   at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean&amp; abortProcessing)    
         </faultstring>
         <detail/>
      </soap:Fault>    
   </soap:Body>
</soap:Envelope>

从上面的错误中可以看出,问题在于 SOAPAction 参数有一个额外的正斜杠。

我在类上使用以下属性:
<WebService(Namespace:= "urn:mycode:us:gu:das:supplierengagement:v02:SupplierEngagement:AppointSupplier")>

以及方法调用的以下属性:
<WebMethod(MessageName:="appointSupplierRq")>

从这些中,.Net 正在添加正斜杠。

必须可以删除自动生成的正斜杠。

最佳答案

从审查代码,创建模拟样本等我没有看到问题。是的,我确实看到了您在帖子中提到的额外正斜杠,但这是设计使然。这就是 ASMX 服务如何记录要执行的类中的方法。

现在来自您的 SOAP 消息和您的 WebService\WebMethod属性有一些不同步。您的 SOAP Header 操作应该是
urn:mycode:us:gu:das:supplierengagement:v02:SupplierEngagement:AppointSupplier/appointSupplierReq
不是
urn:mycode:us:gu:das:supplierengagement:v02:SupplierEngagement:/AppointSupplier
这让我相信您没有将 SOAP UI 项目更新为新生成的 WSDL。尝试在 SOAP UI 中创建一个指向 ASMX Web 服务的 WSDL 文件的新项目,例如。
http://<web host>/SupplierEngagement.asmx?wsdl
并运行测试方法。如果这不能解决问题,请发布(作为编辑)SupplierEngagement asmx 文件的完整类(您可以省略方法内容),因为我们只对完整设置真正感兴趣。

关于asp.net - Web 服务在 SOAPAction 中添加额外的正斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20050974/

相关文章:

asp.net - ASP向导步骤

c# - 无法使用Windows身份验证IIS登录网站

asp.net - 我的 pay pal 按钮不会链接到 paypal。它只刷新页面,为什么?

java - 如何在 Tomcat 服务器中部署 Dropwizard Web 服务

c# - 如何将 IdentityServer4 与 ASP.NET Microsoft Identity 的自定义密码验证结合使用

HTML5 视频无法在 ASP.NET 中播放

web-services - 如何保护 RESTful Web 服务的安全?

java - 不同类型的 Web 服务

c# - 为什么我在 C# 和 VB.NET 之间得到不同的 CRC16 结果?

javascript - document.form.submit() 是如何在代码后面接收的?