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

问题描述 投票:0回答:7

简单的问题。我启动 VS2008 并创建一个新的 WCF 服务应用程序。这将创建一个默认应用程序,并使用一些测试方法来显示它的工作原理。我按 CTRL+F5 确实有效!伟大的!但是,它使用 Visual Studio 开发服务器,我不想支持它。

因此,我转到项目属性,切换到使用本地 IIS Web 服务器,创建虚拟目录并再次按 CTRL+F5。这个“HTTP 错误 404.3 - 未找到”错误正在向我致意。

所以我的 IIS7/Vista-64 设置中的某些内容是错误的。我可能会错过什么?

c# visual-studio-2008 iis-7 wcf http-status-code-404
7个回答
27
投票

单击开始 -> 运行

cmd
并输入:

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

25
投票

如果您是第一次遇到这个问题。对于 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 激活”
  5. 享受您的WCF服务

10
投票

然而,问题是如何将 ASP.Net 重新注册到 IIS,这将在下面解释。

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

以下是微软的解释:

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 后安装 3.0 版本的 WCF Http 激活模块时,可能会出现此错误。

要解决此问题,您必须使用 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.... 在 World Wide 的根目录中...... 请查看图片以获取更多帮助enter image description here


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。


0
投票

最新答案

其中一些答案来自 .NET Framework 4 之前的版本,并且激活是按框架进行的。

因此请务必选择

HTTP Activation
下的
.NET 4 Advanced Services > WCF Services

© www.soinside.com 2019 - 2024. All rights reserved.