显示WCF错误404.17的原因

本文关键字:WCF 错误 显示 | 更新日期: 2023-09-27 18:19:34

我得到了这个错误:

404.17-请求的内容似乎是脚本,不会由静态文件处理程序提供服务

我在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(此处建议)

然后,我通过启用"HTTP激活"(如这里所建议的)最终修复了它。

我的问题是:这个错误到底意味着什么?我基本上已经通过盲目搜索网络并尝试各种建议来解决了这个问题,但我突然想到,如果我能准确地理解这个错误告诉我什么,我可能会更快地做到这一点。

编辑:

在对这篇文章发表了有益和建设性的评论之后,我想我会努力澄清我在这里的要求。

显然,错误消息本身是有意义的(在某种程度上)。static处理程序将无法运行script。那么,HTTP激活就是这样做的吗?为什么ServiceModelReg会有所帮助?从.Net 2移动到.Net 4时,为什么会出现此问题?

显示WCF错误404.17的原因

错误消息告诉您:

静态文件处理程序将为您的服务器端脚本,而不是另一个执行它的处理程序可能不是你想要的,所以我破例相反

此错误表明您的处理程序设置不正确。在您的情况下,对服务的请求本应由Http激活服务(我猜是IHttpModule)接收,但由于它不是(模块不是活动的),它最终由静态文件处理程序作为最后的回退进行处理。

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

Http激活模块(System.ServiceModel.Activation.HttpModule)已在machine.config文件中注册。NET 2.0和.NET 4.0有单独的机器配置。Http激活功能也分别适用于这两个.NET版本。