浏览Windows Server 2008(64位)上的wcf服务时出现“ HTTP错误404.3-找不到”


88

我正在开发基于.Net Framework 3.5 sp1并托管在Windows Server 2008(64位)上的应用程序。

在本地浏览wcf服务(.svc)时,一切正常,但是在使用完整域URL浏览时,出现错误。

本地地址是这样的:http://localhost/MyService.svc

和域名地址是这样的:http : //MySite.ir/MyService.svc

顺便说一下,页面(.aspx)和其他文件在localhost上以及在具有域地址的情况下均能正常工作。

任何想法将不胜感激

这是详细的错误:


HTTP错误404.3-找不到

由于扩展程序配置的原因,无法提供您请求的页面。如果页面是脚本,请添加处理程序。如果应下载文件,请添加一个MIME映射。详细错误信息

模块: StaticFileModule

通知: ExecuteRequestHandler

处理程序:StaticFile

错误代码: 0x80070032

要求的网址:http : //MySite.ir : 80/MyService.svc

物理路径: D:\ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

登录方法: 匿名

登录用户 匿名

Answers:


224

请确保您已从此处激活WCF组件。

另一种简便的方法是,进入控制面板->打开或关闭Windows功能->并确保已选中所有选项,如下面的屏幕截图所述。

在此处输入图片说明

您可能需要激活每个框并接受,以防一次激活所有功能时出错


36
.Net Framework 4.5高级服务->检查WCF服务,然后-> HTTP激活为我做到了!
devHead 2014年

3
Windows Server 2012-仅需要HTTP激活和端口共享检查。
dibs487 '16

2
我会在此响应中添加一个接一个的激活框。同一时间的所有检查都可能失败。它发生在Windows Server 2012
harveyt

2
这个答案应该在顶部
markthewizard1234 '16

3
这是正确的答案。这为我解决了这个问题,我不必手动将任何内容手动添加到IIS处理程序映射。
安东尼

25

好的,这是答案:

转到处理程序映射| 添加处理程序管理器->然后添加以下信息

请求路径:*。svc

类型:System.ServiceModel.Activation.HttpHandler,System.ServiceModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089

名称:svc-Integrated


3
对于任何想将此添加到其web.config文件中的人,这在.NET 4.5项目中对我来说都是有效的:<add name =“ svc-Integrated” path =“ .svc” verb =“ ” type =“ System.ServiceModel。 Activation.HttpHandler,System.ServiceModel.Activation,版本= 4.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35“ />
Stefan Mohr

6
对我来说,将@StefanMohr中的行添加到Web.config中并不是很有效。但是,我进行了更改path="*.svc"verb="*"并且效果很好。因此,我使用的行是:(<add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>在configuration / system.webServer / handlers中添加)。
Aron Boyette

11

如果任何人有Windows Server 2012中在这个问题上,比尔月球的答案在这里解决了这个问题对我来说:

“对于Windows Server 2012 ...在服务器管理器中,单击“添加角色和功能”,选择适当的服务器,然后选择“功能”。在.NET Framework 4.5功能下,您将看到WCF服务,在该功能下,您将看到找到HTTP激活。”


1
在任何现有的Web应用程序中,添加Windows功能后,您还必须执行以下操作:-启动inetmgr-打开“处理程序映射”-检查扩展名* .svc的svc-ISAPI映射是否存在。如果不是,请使用“还原为父对象”操作从父网站复制它们。请注意,这假定在应用程序的web.config中配置了自定义处理程序映射,这在IIS7 +中通常是这样。如果没有,您将在执行“还原为父对象”时丢失它们。
Berend Engelbrecht 2014年

8

我的笔记本电脑中装有Windows 10,并使用Visual Studio 2015进行WCF开发。WCF在Visual Studio中运行良好,但是在IIS中托管时,出现了相同的错误。

我检查了IIS处理程序。svc扩展名丢失。因此,我尝试按照Mori在第一个答案中的建议在IIS中添加新的处理程序。我找不到类型“ System.ServiceModel.Activation.HttpHandler”。

因此,我打开了“打开或关闭Windows功能”,并安装了屏幕截图中突出显示的功能。

这对我有用。

在此处输入图片说明



0

我想将此添加为答案,但没有足够的代表。我尝试运行带有各种标志的ServiceModelReg和aspnet_regiis.exe,并添加了HTTP激活功能,但仍然无法正常工作。即使在IIS中使用Handler映射UI也无法正常工作,因为它找不到System.ServiceModel.Activation.HttpHandler。最终起作用的是将Mori提到的处理程序手动添加到我的web.config文件中。

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

我的项目在Windows 7上运行.Net 3.5和IIS 7.5,在Win Server 2008 R2上运行IIS 7.0。


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.