Wcf HTTPS上的SOAP端点返回400个错误请求
我有一个WCF服务托管在IIS下,在负载平衡器后面。SSL在LB卸载,然后在普通HTTP中调用服务 我使服务的REST端点工作,但似乎无法使SOAP端点显示wsdl页面。打电话的时候https://domain/Service.svc/soap?wsdl 浏览器接收400巴的请求响应。我也检查了svclog,错误是从网络接收的XML有问题。有关详细信息,请参阅内部异常。这意味着它希望我做一篇文章,而不是获取和发送一个XML 来自配置的代码段:Wcf HTTPS上的SOAP端点返回400个错误请求,wcf,soap,https,endpoint,bad-request,Wcf,Soap,Https,Endpoint,Bad Request,我有一个WCF服务托管在IIS下,在负载平衡器后面。SSL在LB卸载,然后在普通HTTP中调用服务 我使服务的REST端点工作,但似乎无法使SOAP端点显示wsdl页面。打电话的时候https://domain/Service.svc/soap?wsdl 浏览器接收400巴的请求响应。我也检查了svclog,错误是从网络接收的XML有问题。有关详细信息,请参阅内部异常。这意味着它希望我做一篇文章,而不是获取和发送一个XML 来自配置的代码段: <bindings> <b
<bindings>
<basicHttpBinding>
<binding name="basicBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="Transport"></security>
<readerQuotas maxStringContentLength="2147483647" />
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="webBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="Transport"></security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="MyServiceBehavior" name="Namespace.Service">
<endpoint address="" behaviorConfiguration="MyRESTBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" name="REST" contract="Namespace.IService" />
<endpoint address="https://domain/Service.svc/soap" binding="basicHttpBinding" bindingConfiguration="basicBinding" name="SOAP" contract="Namespace.IService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="6553600" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MyRESTBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
我也尝试过使用wsHttpBinding,但唯一不同的结果是得到了401s。感谢您的指导。我不相信您能为basicHttpBinding端点使用绝对地址。请尝试以下方法:
<endpoint address="soap" binding="basicHttpBinding" bindingConfiguration=...
要访问WSDL,您的URL应如下所示:https://domain/soap/Service.svc?wsdl. 使用IIS&WCF,您无法覆盖虚拟目录的URL。端点地址值应与网站URL相对。我找到了它。我之前从serviceMetadata中删除了httpsGetUrl属性,因为发布服务两次时出错。我现在认为这个错误可能是由于输入错误,我不应该删除httpsGetUrl。将“行为”部分更改为以下部分解决了我的问题:
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" httpsGetUrl="https://domain/Service.svc/soap" />
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="6553600" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MyRESTBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>