我正在尝试将 WCF Web 服务从 .NET 3.0 升级到 4。我已经运行
Aspnet_regiis.exe
和
ServiceModelReg.exe
以及将应用程序池更改为使用 v4.0。我以 .NET 4.0 为目标重建了服务 dll,并将其移动到我的站点上的 /bin 目录。
我遇到了一个让我抓狂的错误。每当我尝试访问该网站时,都会收到以下错误:
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
无法读取配置部分“system.serviceModel”,因为它缺少部分声明
我尝试了谷歌搜索找到的解决方案,但都不起作用。我觉得 IIS 7 方面更有经验的人应该知道到底出了什么问题。有人能帮我解决这个问题吗
答案1
答案2
尝试 aspnet_regiis.exe /iru
答案3
您可以检查以下事项:
您是否将应用程序中的 WCF 引用更改为 Framework 4.0 版本?
以下是 Microsoft 支持文章:安装 .NET Framework 4.0 后出现错误消息:“无法加载类型‘System.ServiceModel.Activation.HttpModule’”:
出现此问题的原因是,Windows 进程激活服务 (WAS) 的 Applicationhost.config 文件中定义了以下部分,而此部分与 .NET Framework 4.0 不兼容 [...]
.svc:确保 IIS 和 WCF 已正确安装并注册:http://msdn.microsoft.com/en-us/library/aa751792.aspx
答案4
确保在服务器角色/功能中安装了 WCF HTTP 激活功能(它将是 3.5 版本),然后重新安装 .NET Framework 4.0。(您必须从下载中安装它,它不是 Windows 组件/功能的一部分)
如果幸运的话,应该以这样的方式重新注册脚本映射,即 .NET 4 将成功接收来自 IIS 的 WAS HTTP 激活请求,而不是绕过 3.5,因为 3.5 不明白它被要求做什么。
理论上,aspnet_regiis /i来自 .NET Framework 4.0 目录也应该这样做,但是您说您已经尝试过了。