我创建了一个ASP.NET Web服务(asmx),允许第三方软件连接到我的解决方案.当从服务器所驻留的服务器调用时,使用SOAP 1.1或ASP.NET的调用表调用web服务时效果很好.
那么问题是什么,连接方只支持SOAP 1.2,当使用SOAP 1.2调用web服务时,它返回400 Bad请求.
我在web.config中启用了SOAP 1.2:
<configuration>
<system.web>
<webServices>
<soapExtensionTypes>
<add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" priority="1" group="0" />
</soapExtensionTypes>
<protocols>
<add name="HttpSoap12" />
<add name="HttpGet" />
<add name="HttpPost" />
</protocols>
</webServices>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我将扩展用于另一部分,我试图通过特定于位置的配置禁用它,但是没有产生任何结果.
我启用了跟踪:
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.Web.Services.Asmx">
<listeners>
<add name="AsmxTraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="D:\Trace.log" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Web.Services.Asmx" value="Verbose" />
</switches>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
使用Chrome Advanced Rest Client我发送以下请求:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<authenticateUser …Run Code Online (Sandbox Code Playgroud)