2

这是我的问题。我正在安装我工作的公司在 5.0.4 版 DotNetNuke 安装中开发的模块。

.dnn 清单文件有一个包含此添加的节点部分

<node path="/configuration/system.webServer/handlers" 
    action="update" key="name" collision="overwrite">
    <add name="svc-Integrated" verb="*" path="*.svc"
     type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=1111111111111111" resourceType="Unspecified" 
        preCondition="integratedMode"/>
</node>

DNN 应用程序的 web.config 尚未在 configuration/system.webServer/handlers 部分中添加此内容,因此将其添加到 web.config 中。

然后在尝试加载网站时,我收到一条错误消息:

Cannot add duplicate collection entry of type 'add' with 
    unique key attribute 'name' set to 'svc-Integrated'

我花了一些时间寻找 svc-Integrated 的重复条目可能来自哪里,最后发现在 IIS 中查看 DNN Web 应用程序所在的网站。它有一个Handler Mappings部分,网站的 svc-Integrated 标记在那里,条目类型Inherited

我试图找出 svc-Integrated 处理程序是从哪里继承的。

编辑:我在machine.configweb.config文件中查看了c:\windows\Microsoft.NET\Framework\v2.0.50727\CONFIG,并且根本没有任何条目说“svc-Integrated”姓名。我尝试在machine.configweb.config中的每个文件夹下查看Framework64文件夹和 v4.* 文件夹,并且在任何这些位置都没有 svc-Integrated ,所以我没有丝毫线索 IIS 在哪里得到这个处理程序定义来自:(

4

1 回答 1

1

当 Handler 的Entry TypeInherited时,您可以通过在Internet Information Services (IIS) Manager左侧的Connections面板中上一级,然后双击Handler Mappings来查找它的继承位置在服务器组件组中。在该级别上找到相同的 Handler,并查看它是否是从另一个级别继承的,或者它是否是该级别的本地。

我发现 IIS7 中机器的处理程序映射来自"C:\Windows\System32\inetsrv\config\applicationHost.config"

technet.microsoft.com 上的[这篇文章]帮助我找到了我找到本地条目所在级别的配置文件,并解释了配置继承级别。

机器配置。此文件位于 %windir%\Microsoft.NET\Framework\framework_version\CONFIG。

.NET Framework 的根 Web.config。此文件位于 %windir%\Microsoft.NET\Framework\framework_version\CONFIG。

应用程序主机.config。此文件位于 %windir%\system32\inetsrv\config。

那是我找到我试图找到的 svc-Integrated 配置条目的地方。

我最终只是右键单击应用程序的处理程序映射中的svc-Integrated处理程序映射,然后单击删除。这解决了我的应用程序在尝试覆盖处理程序映射时遇到的冲突。

于 2013-04-30T14:42:47.953 回答