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

我有一个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。

                                   

我会从检查一些事情开始;

  • 托管目录的权限?
  • .Net版本是否正确?
  • 您是否已将证书添加到网站?
  • 尝试将图像放在相同的路径中,你可以导航到那个(排除奇怪的偶尔路径映射)

祝好运!

我有同样的问题。 根据我的阅读,默认情况下,WCF不是NT认证授权(或HTTPContext兼容)。

我不得不将此添加到我的配置文件中,用于以下部分中的WCF服务web.config:

  

你做了什么,加上这个:

在实际的服务类定义中,我必须添加:

 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class DataService : IDataDeliveryServiceContract 

这解决了我的问题。

您可以使用WsHttp绑定实现传输级别安全性。 看到这篇文章 ; 在您的绑定中尝试此替换:

        

文章提到你应该绑定绑定与端点。

也许在你的RouteConfig.cs文件中添加以下行:

 routes.IgnoreRoute("{resource}.svc/{*pathInfo}"); 

只要您的.svc文件位于应用程序的根目录中。

正如您所提到的,您可以通过.svc扩展service.svc访问您的服务,但不能以REST格式service.svc/AnyRequest访问您的服务,问题必须在路由集成中 。

将其添加到您的web.config

          

在IIS 6中此错误的原因必须是Check that file exists svc扩展的Check that file exists设置,确保“检查文件是否存在未选中”。 有关更多信息,请参阅IIS托管服务失败 。

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

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

在此处输入图像描述

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

有关此特定问题以及如何解决此问题的其他信息,您还可以在我的博客上阅读此文章 。