在Windows Server 2008(64位)上浏览wcf服务时出现HTTP错误404.3 - 未找到

时间:2010-07-18 06:07:19

标签: wcf

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

在本地浏览wcf服务(.svc)时,每件事情都可以,但在使用完整域名网址浏览时,却出错了。

本地地址是这样的: 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

登录方法:匿名

登录用户匿名

7 个答案:

答案 0 :(得分:181)

请确保您已从here激活了WCF组件。

或者替代方便的是,转到控制面板 - >打开或关闭Windows功能 - >并确保您已按照以下屏幕截图中的提示选中所有选项。

enter image description here

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

答案 1 :(得分:24)

好的,这是答案:

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

请求路径: * .svc

输入: System.ServiceModel.Activation.HttpHandler,System.ServiceModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089

名称: svc-Integrated

答案 2 :(得分:9)

如果有人在Windows Server 2012上遇到此问题,Bill Moon的回答here就为我解决了这个问题:

“对于Windows Server 2012 ...从服务器管理器中,单击添加角色和功能,选择相应的服务器,然后选择功能。在.NET Framework 4.5功能下,您将看到WCF服务,在此之下,你会找到HTTP激活。“

答案 3 :(得分:7)

我的笔记本电脑中安装了Windows 10,并使用visual studio 2015进行WCF开发。 WCF在visual studio中正常运行,但是当在IIS中托管时我遇到了同样的错误。

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

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

这对我有用。

enter image description here

答案 4 :(得分:0)

如果您使用的是.Net 4.x,则PublicKeyToken为31bf3856ad364e35。

但是,关于this post关于在IIS中正确安装WCF服务的问题,我已经为我设置了处理程序。

答案 5 :(得分: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。

答案 6 :(得分:0)

尝试从“打开或关闭Windows功能”窗口(See here)取消选中WCF HTTP激活,然后转到

重新安装
%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

并执行 ServiceModelReg -i