简单的问题。我启动 VS2008 并创建一个新的 WCF 服务应用程序。这将创建一个默认应用程序,并使用一些测试方法来显示它的工作原理。我按 CTRL+F5 确实有效!伟大的!但是,它使用 Visual Studio 开发服务器,我不想支持它。
因此,我转到项目属性,切换到使用本地 IIS Web 服务器,创建虚拟目录并再次按 CTRL+F5。这个“HTTP 错误 404.3 - 未找到”错误正在向我致意。
所以我的 IIS7/Vista-64 设置中的某些内容是错误的。我可能会错过什么?
单击开始 -> 运行
cmd
并输入:
cd "\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation"
ServiceModelReg.exe -i
如果您是第一次遇到这个问题。对于 Windows 8 和 IIS 8.0,请确保激活 Windows Communication Foundation HTTP Windows 功能。
然而,问题是如何将 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
还有应得的信用:来源
我必须在 Windows Server 2012 中的“添加角色服务”中勾选“HTTP 激活”。
尝试通过扩展您的 Internet 信息服务来安装 IIS,然后检查 ASP.Net 3.5 或 ASP.Net 4.5 和 ISAPI.... 在 World Wide 的根目录中...... 请查看图片以获取更多帮助
我尝试使用各种标志运行 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。