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错误。
有关此特定问题以及如何解决此问题的其他信息,您还可以在我的博客上阅读此文章 。