我最近创建了一个在Visual Studio 2008中测试时运行良好的WCF服务。但是当我将项目部署到IIS并尝试从IIS访问.svc文件时,我收到此错误:
"Server Error in '/' Application.The resource cannot be found. "
过去4天我一直有这个问题。
在IIS管理器的Handler Mappings中,我可以看到.svc的两个条目:
svc-Integrated and svc-ISAPI-2.0
答案 0 :(得分:79)
答案 1 :(得分:66)
您需要将SVC扩展的映射添加到ASP.NET。最简单的方法是从C:\ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation运行ServiceModelReg.exe -i
。如果尚未启用ASP.NET,则可能还需要启用ASP.NET。
如果您使用的是Windows Server 2012或2016,请按照以下说明操作:
答案 2 :(得分:49)
我发现these instructions on a blog post表示这一步,对我有用(Windows 8,64位):
确保在Windows功能中,您在.Net框架下有两个WCF选项。所以转到控制面板 - >程序和功能 - >打开/关闭Windows功能 - >特点 - >添加功能 - > .NET Framework X.X功能。确保.Net框架说它已安装,并确保选中它下面的WCF激活节点(勾选复选框),并且还检查WCF激活下的两个选项。These are: * HTTP Activation * Non-HTTP Activation Both options need to be selected (checked box ticked).
答案 3 :(得分:4)
我看到你已经解决了你的问题 - 但对于子孙后代:
我们遇到了类似的问题,并且SVC处理程序已经正确安装。我们的问题是ExtensionlessUrl处理程序在它们到达SVC处理程序之前处理请求。
要检查这一点 - 在Web服务器级别的IIS管理器中的Handler Mappings中,按顺序查看处理程序列表(它是右侧的选项)。如果各种ExtensionlessUrl处理程序出现在SVC处理程序上方,则重复向下移动它们直到它们位于底部。
答案 4 :(得分:1)
验证您的目录是否已转换为应用程序是您的IIS。
答案 5 :(得分:1)
在Windows 10中启用IIS 6管理兼容性后,这也会成为一个问题。在WCF服务下设置框架HTTP激活将解决问题。
答案 6 :(得分:0)
在我的情况下,错误是由文件applicationhost.config(\ System32 \ inetsrv \ config)中的映射设置不正确引起的。出于某种原因,Visual Studio 2013在IIS中创建虚拟目录时损坏了它。修复是手动编辑文件中的站点部分。
答案 7 :(得分:0)
答案 8 :(得分:0)
在我的案例中,Win 10.文件applicationHost.config已被VS 2012损坏。您可以在C:\ inetpub \ history下复制此文件的历史记录。然后重新启动IIS,它可以正常工作。
答案 9 :(得分:0)
答案 10 :(得分:0)
在请求过滤中添加.svc后缀对我来说是成功的秘诀。
答案 11 :(得分:0)
以上解决方案均无法为我解决此错误。我必须在web.config中设置以下内容:
system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
我想借此机会再次向Microsoft诅咒,因为它与.NET Framework造成了巨大的混乱,并使开发人员的生活如此悲惨!