在IIS中访问.svc文件时的HTTP 404


86

我最近创建了一个WCF服务,该服务在从Visual Studio 2008中进行测试时可以正常工作。但是,当我将项目部署到IIS并尝试从IIS访问.svc文件时,出现此错误:

"Server Error in '/' Application.The resource cannot be found.  "

在过去的4天中,我一直遇到这个问题。

在IIS管理器的处理程序映射中,我可以看到.svc的两个条目:

svc-Integrated and svc-ISAPI-2.0

Answers:


75

您需要为SVC扩展添加到ASP.NET的映射。最简单的方法是ServiceModelReg.exe -i从C:\ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation运行。如果尚未启用ASP.NET,则可能还需要启用它。


如果您使用的是Windows Server 2012或2016,请遵循以下说明:


之后是否尝试重新启动IIS?
tvanfosson

您现在是否有.svc的mime映射?
tvanfosson

它不是mime映射-应用程序扩展映射。请参阅msdn.microsoft.com/zh-cn/library/ms752252(v=vs.90).aspx
Michael Freidgeim

22
重要提示:不要在安装了.NET 4.5的Server 2012上执行此操作。直到我再运行ServiceModelReg.exe -ua之前,它一直困扰着我。看到这里的服务器解决方案2012:stackoverflow.com/questions/11116134/...
斯科特安德森

109

在Windows 2012 Server R2上对我有用的是:

WCF HTTP 404

感谢去“亚伦D”


3
到目前为止,最简单的选择。
BIDeveloper

在Win10,Win8.1台式机和Win2012服务器上对我有用:)谢谢!
船长

在Win10,Win8.1台式机和Win2012服务器上对我有用:)谢谢!
船长

2
由于某些原因,我必须通过命令行安装3.5和4.5的功能: dism /online /enable-feature /featurename:WCF-http-Activation45 /all 以及 dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan,

1
工程于2019 Sever的,以及
扎尔夏丹

56

指示该步骤的博客文章中找到了这些说明,该说明对我有用(Windows 8,64位):

确保在Windows功能中,都选中了.Net framework下的两个WCF选项。因此,请转到控制面板–>程序和功能–>打开/关闭Windows功能–>功能–>添加功能–> .NET Framework XX功能。确保.Net framework表示已安装,并确保选中了其下方的WCF Activation节点(勾选了此复选框),并且还选中了WCF Activation下的两个选项。
这些是:
* HTTP激活
*非HTTP激活
这两个选项都需要选中(选中复选框)。

2
如果我可以多次投票支持,那就让我发疯了,加油!
克里斯·W

4

我看到您已经解决了您的问题-但为了后代:

我们有一个类似的问题,并且SVC处理程序已经正确安装。我们的问题是ExtensionlessUrl处理程序在请求到达SVC处理程序之前对其进行处理。

若要进行检查-在Web服务器级别的IIS管理器中的“处理程序映射”中,按顺序查看处理程序列表(这是右侧的选项)。如果各种ExtensionlessUrl处理程序出现在SVC处理程序上方,则重复将其向下移动直到它们位于底部。


1

验证您的目录是否已转换为IIS应用程序。


1

我今天遇到了同样的问题。

对我来说,解决方案是进入IIS,右键单击新的网站名称,选择Properties(属性),ASP.Net,然后将ASP.Net版本从“ 1.1.4322”(已设置为默认值)更改为到2.0.50727。

完成此操作后,可以右键单击.svc文件,单击“浏览”,然后查看友好的服务网页。


1

在Windows 10中启用IIS 6管理兼容性后,这也可能成为问题。在WCF服务下设置框架HTTP激活将解决此问题。


0

就我而言,该错误是由文件applicationhost.config(\ System32 \ inetsrv \ config)中错误的映射设置引起的。由于某些原因,Visual Studio 2013在IIS中创建虚拟目录时损坏了它。解决方法是手动编辑文件中的“站点”部分。


0

Server 2012的添加角色/功能下的功能下有2个.net框架版本

一种。3.5

b。4.5

根据使用的框架,可以在WCF服务下启用HTTP激活。:)


0

在我的Win 10中,VS 2012损坏了文件applicationHost.config。您可以在C:\ inetpub \ history下获取该文件的历史记录副本。然后重新启动IIS,它可以正常工作。


0

我必须在请求过滤设置中将扩展名.svc添加到允许的扩展名中(之前收到404.7错误)。

在此处输入图片说明



0

以上解决方案均无法为我解决此错误。我必须在web.config中设置以下内容:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

我想借此机会再次诅咒Microsoft,因为它与.NET Framework造成了巨大的混乱,并使开发人员的生活如此悲惨!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.