gpt4 book ai didi

WCF 服务通过 https 而不是 http 返回 404

转载 作者:行者123 更新时间:2023-12-04 02:00:43 24 4
gpt4 key购买 nike

我正在将现有服务从 HTTP (Dev/UAT) 迁移到 HTTPS (Production),但配置有问题。这是我的 web.config 的 system.serviceModel 部分:

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
<services>
<service name="MyService">
<endpoint name="MyEndpoint" address="" binding="wsHttpBinding"
bindingConfiguration="secureBinding" contract="IMyService" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="secureBinding">
<security mode="Transport"></security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>

我已经尝试使用这两个 basicHttpBindingwsHttpBinding ,结果相同:
  • 我可以使用 http://server.domain.com/MyService.svc 从我的 SOAP 客户端调用服务
  • 我可以使用 https://server.domain.com/MyService.svc 从浏览器访问服务
  • 我无法使用 https://server.domain.com/MyService.svc 从我的 SOAP 客户端调用服务- 调用总是出错 404: not found .

  • 我的 https 站点使用由公司域上的 CA 颁发的证书进行了认证,并且我已验证我在 Trusted Root Certification Authorities 中安装了该 CA 的证书在我调用电话的系统上。

    相关客户端代码:
    Service service = new Service();
    service.Url = "http://server.domain.com/MyService.svc";
    //service.Url = "https://server.domain.com/MyService.svc";
    service.WebMethodCall();

    编辑

    以下是 WSDL 的请求部分:
    <wsdl:types/>
    <wsdl:portType name="IMyService"/>
    <wsdl:binding name="BasicHttpBinding_IMyService" type="tns:IMyService">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    </wsdl:binding>
    <wsdl:service name="MyService">
    <wsdl:port name="BasicHttpBinding_IMyService"
    binding="tns:BasicHttpBinding_IMyService">
    <soap:address location="http://server.domain.com/MyService.svc"/>
    </wsdl:port>
    </wsdl:service>

    编辑

    更多信息:

    当我将 serviceMetadata 元素更改为具有 httpGetEnabled="false"httpsGetEnabled="true" .svc 页面显示了以下链接:
    https://boxname.domain.com/MyService.svc?wsdl

    而不是预期的
    https://server.domain.com/MyService.svc?wsdl

    最佳答案

    检查 web.config 中的服务元素名称是否与实现契约(Contract)的类的完全限定名称匹配。

    <services>
    <service name="MyNamespace.MyService">
    <endpoint name="MyEndpoint" address="" binding="wsHttpBinding" ...

    关于WCF 服务通过 https 而不是 http 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876955/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com