为什么ServiceModel有时会在Framework文件夹的Web.config中声明,有时则不会?

5
我们正在部署一个ASP.NET 4.0网站应用程序,它在Web.config文件的部分中有这个声明:
<add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler"/>

在大多数安装中,这是很好的且必要的。然而,在两个安装中,我们收到了有关重复条目的以下错误。在出现此错误的两个安装中,我们发现此声明已经存在于此处:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config

那些没有错误的安装程序,在上述文件中没有那一行。为什么框架的Web.config文件在不同的安装程序之间不一致?我们还没有能够确定具体的差异。这些主要是具有Windows Server 2003或Windows Server 2008的服务器,但也包括一些带有Windows 7的测试盒。工作的安装程序是以上两者的混合物,两个不工作的安装程序分别是Windows Server 2008和Windows 7。所有安装程序都安装了.NET 4完整配置文件。
详细的错误信息: 模块:IIS Web Core 通知:BeginRequest 处理程序:尚未确定 错误代码:0x800700b7 配置错误:Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'ServiceModel' 配置文件:\\?\C:\Inetpub\wwwroot\web.config 请求的URL:http://localhost:80/ 物理路径:C:\Inetpub\wwwroot 登录方法:尚未确定 登录用户:尚未确定 98: <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler"/>

1
这可能对您有所帮助:https://dev59.com/Zk7Sa4cB1Zd3GeqP0yCt - Veli Gebrev
@Veli,感谢你提供的链接。确实回答了我的问题。 - Samuel Neff
1个回答

3

启用以下Windows功能时,该模块将安装(到基本的.NET Framework配置文件中):

Microsoft .NET Framework 3.5.1 -> Windows通信基础架构HTTP激活

启用WCF HTTP激活时,它会将WCF注册到IIS。这包括添加WCF激活模块、为.svc文件添加脚本映射等。


你知道修复这个问题的最佳方法吗?从Web.config中删除add name="ServiceModel"似乎可以解决问题,但是a)我不确定哪些模块使用它,因此很难测试;并且b)我们有几台服务器和开发人员机器,所以我担心其中一台会出现问题。 - Justin Morgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接