gpt4 book ai didi

c# - WCF 服务在方法请求上返回 404

转载 作者:IT王子 更新时间:2023-10-29 04:33:15 25 4
gpt4 key购买 nike

我有一个 WCF 服务页面,它仅通过 SSL 运行 WebGets/WebInvokes - 它在我的本地机器上运行良好(自签名证书)。但是,在生产环境中,我可以访问 service.svc(它会向我提供有关如何使用的消息),但 service.svc/AnyRequest 返回 404。这两个环境都托管在 IIS 7.5 中。

我已经启用了跟踪,服务甚至没有接收到任何方法请求(例如 service.svc/SomeRequest),但是它正在处理 service.svc 就好了。它还在 https://computername.domain.net/path/service.svc 上监听 - 这正常吗?它通常应该指向 https://publicfacing.com/path/service.svc 吗?

另请注意,生产服务器在 IIS 中托管多个站点。

下面是我的 web.config 的 system.serviceModel 部分。 SSLBehave 是从 here 建议的.

  <system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<transport clientCredentialType="None"></transport>
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="SSLBehave">
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="https" port="443"/>
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="UserManagement.ajaxAspNetAjaxBehavior">
<webHttp defaultOutgoingResponseFormat="Json" defaultBodyStyle="Wrapped" />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="UserManagement.ajax" behaviorConfiguration="SSLBehave">
<endpoint address="" behaviorConfiguration="UserManagement.ajaxAspNetAjaxBehavior"
binding="webHttpBinding" bindingConfiguration="TransportSecurity" contract="UserManagement.ajax" />
</service>
</services>
</system.serviceModel>

最佳答案

每当我使用新开发的 WCF Web 服务遇到 404 时,我做的第一件事就是检查解释此类调用所需的处理程序映射,因为这通常是问题的原因。有多种方法可以解决此问题,其中许多方法需要手动执行 ServiceModelReg.exe 控制台命令:这些无疑是有效的过程,但也可能无法工作 - 或者产生其他问题 - 如果您开发机的配置特别复杂。我在下面提出的解决方法的实现时间稍长,但具有更安全可靠地解决问题的优点。

  • 打开用于机器管理的服务器管理器界面,通常出现在任务栏开始菜单中。
  • 转到仪表板(或控制面板)并选择添加角色或功能以打开向导。
  • 选择基于角色或基于功能的安装类型以及您要使用的服务器,即您的本地/本地服务器。
  • 转到功能部分:在那里,展开.NET Framework 3.5 功能 节点和/或.NET Framework 4.5 功能节点,具体取决于您安装的内容:如果您同时安装了这两个节点,则应执行以下步骤两次(对每个节点执行一次)。
  • 展开 WCF 服务部分(如果可用),然后选择 HTTP 激活(参见下面的屏幕截图)。
  • 继续,直到完成向导,然后单击安装

enter image description here

安装完成后,您应该能够运行 WCF 服务而不会再次出现 404 错误。

有关此特定问题及其解决方法的更多信息,您还可以 read this post在我的博客上。

关于c# - WCF 服务在方法请求上返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240217/

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