WCF错误404.17是什么意思?

时间:2014-08-27 16:13:23

标签: c# asp.net .net wcf iis

我收到了这个错误:

404.17 - The requested content appears to be script and will not be served by the static file handler

我在Windows 8,VS2013上运行IIS 8.5。我的应用程序池设置为.NET 4(我相信从.Net 2迁移到.Net 4是导致问题的原因)。我的服务代码是.NET 3.5。

我检查过.NET 3.5和4.5都是作为功能启用的,以及ISAPI扩展和过滤器的可扩展性。 我试过了:

  • 卸载并重新安装ASP.NET 4.5
  • 运行ServiceModelReg(建议here

然后我终于通过启用" HTTP激活"来修复它。 (按照建议here)。

我的问题是:这个错误究竟意味着什么?我通过盲目搜索网络并尝试各种建议基本上解决了这个问题,但如果我完全理解这个错误告诉我的话,我可能会更快地做到这一点。

编辑:

在对这篇文章发表的有益和建设性的评论之后,我想我会试着澄清我在这里问的确切内容。

显然,错误消息本身确实有意义(在某种程度上)。 static处理程序无法运行script。那么,HTTP激活的作用是什么?为什么ServiceModelReg会有帮助?从.Net2移动到.Net4时,为什么会出现此问题?

1 个答案:

答案 0 :(得分:0)

错误消息告诉您:

  

静态文件处理程序即将提供您的源代码   服务器端脚本而不是执行它的另一个处理程序。那   可能不是你想要发生的事情,所以我抛出异常   代替。

此错误表示您的处理程序未正确设置。在你的情况下,你的服务请求应该被Http Activation Service(我猜一个IHttpModule)接收,但是因为它不是(模块没有激活),它最终被静态处理文件处理程序作为最终后备。

ServiceModelReg安装或重新安装正确的WCF组件。显然,如果你没有完全设置WCF,这可能会解决这个问题。

Http激活模块(System.ServiceModel.Activation.HttpModule)已在machine.config文件中注册。 .NET 2.0和.NET 4.0具有单独的machine.configs。两个.NET版本也分别存在Http Activation功能。