如何解决“HTTP错误404.3 - 未找到”错误?

20
简单的问题。我启动VS2008并创建了一个新的WCF服务应用程序。这将创建一个带有几个测试方法的默认应用程序以展示它的工作原理。我按下CTRL+F5,确实可以工作!太好了!但是,它使用的是Visual Studio开发服务器,而我不想支持它。
所以我转到项目属性,切换到使用本地IIS Web服务器,创建虚拟目录,然后再次按下CTRL+F5。然而,这个"HTTP错误404.3 - 未找到"的错误正在欢迎我。
因此,我的IIS7/Vista-64设置中缺少了一些东西。我可能遗漏了什么?

2
撰写答案并标记为已接受以使其更清晰。 - Jonathan Fingland
那不起作用。我们还使用3.0吗?或者链接已经过时了? - obesechicken13
6个回答

27

点击开始 -> 运行 cmd,然后输入:

cd "\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation"
ServiceModelReg.exe -i

24

如果你第一次遇到在Windows 8和IIS 8.0上的问题,请确保激活Windows Communication Foundation HTTP Windows功能。

  1. 进入控制面板,选择"程序和功能"
  2. 从左侧菜单中选择"打开或关闭Windows功能"
  3. 展开".Net Framework 3.5 (包括 .NET 2.0 和 3.0)"
  4. 最后选择"Windows Communication Foundation HTTP Activation"
  5. 享受你的WCF服务

2
你的回答是真正的答案,谢谢。请确保对4.0做同样的事情。 - Alex Nolasco
这是正确的、非hacky的方法来解决404.3错误。 - klm_

10

然而问题在于如何将ASP.Net重新注册到IIS中,下面进行了解释。

如果您使用的是64位机器,请始终使用Framework64路径:C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -iru

下面是来自Microsoft的说明:

http://download.microsoft.com/download/0/A/E/0AEB3BC1-506E-4954-8AB1-4FA2EE75985C/ReleaseNotes.docx

在尝试运行通过HTTP传输接收消息的服务时,您可能会收到类似以下错误的错误消息:

在“/WCFApplication”应用程序中发生服务器错误

无法从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpModule”。

描述:执行当前Web请求时发生未处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及其在代码中的源位置。 异常详细信息:System.TypeLoadException: 无法从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpModule”。

当在安装.NET Framework 4之后安装IIS,或者在安装IIS和.NET Framework 4之后安装WCF Http Activation模块的3.0版本时,可能会出现此错误。

解决此问题,您必须使用ASP.NET IIS注册工具(Aspnet_regiis.exe)注册正确版本的ASP.NET。这可以通过在运行aspnet_regiis.exe时使用-iru参数来实现,具体操作如下:

aspnet_regiis.exe -iru

值得注意的是,这里需要给予应有的信用:来源


6
我必须在Windows Server 2012的“添加角色服务”中勾选“HTTP激活”。

3
尝试通过扩展您的Internet信息服务来安装IIS,然后在全球根目录下检查ASP.Net 3.5或ASP.Net 4.5和ISAPI。请参考以下图片以获得更多帮助enter image description here

你的回答有点晚了... :-) - Wim ten Brink

1
我尝试使用不同的标记运行ServiceModelReg和aspnet_regiis.exe,并添加了HTTP激活功能,但仍然无法工作。最后成功的方法是手动将以下处理程序添加到我的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" />

我的项目运行在 .Net 3.5 并且 IIS 版本为 7.5 和 7.0。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接