Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf HTTPS上的SOAP端点返回400个错误请求_Wcf_Soap_Https_Endpoint_Bad Request - Fatal编程技术网

Wcf HTTPS上的SOAP端点返回400个错误请求

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

我有一个WCF服务托管在IIS下,在负载平衡器后面。SSL在LB卸载,然后在普通HTTP中调用服务

我使服务的REST端点工作,但似乎无法使SOAP端点显示wsdl页面。打电话的时候https://domain/Service.svc/soap?wsdl 浏览器接收400巴的请求响应。我也检查了svclog,错误是从网络接收的XML有问题。有关详细信息,请参阅内部异常。这意味着它希望我做一篇文章,而不是获取和发送一个XML

来自配置的代码段:

<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>