如何找出IIS中继承处理程序映射的位置

时间:2013-04-30 13:56:10

标签: asp.net asp.net-mvc iis dotnetnuke

这是我的问题。我正在安装一个我工作的公司的模块,在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在配置/ system.webServer / handlers部分中尚未添加此添加内容,因此它将其添加到web.config。

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

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

我花了一些时间寻找svc-Integrated的这个重复条目可能来自哪里,最后发现在DNN Web应用程序所在的网站上查看IIS。它有一个处理程序映射的部分,svc-Integrated标记位于网站中,条目类型继承

我正在尝试找出继承svc-Integrated处理程序的位置。

编辑:我在 machine.config 网页上查看了 c:\ windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG .config 文件,并且没有任何条目说“svc-Integrated”。我尝试在 machine.config web.config 下的 Framework64 文件夹和v4。*文件夹下查找,并且没有svc - 在这些位置的 ANY 中集成,所以我没有丝毫知道IIS从以下位置获取此处理程序的定义:(

1 个答案:

答案 0 :(得分:1)

当处理程序具有继承条目类型时,您可以通过在 Connections Internet信息服务(IIS)管理器左侧的面板,然后双击服务器组件组中的处理程序映射 。在该级别上查找相同的处理程序,并查看它是从其他级别继承,还是从该级别本地继承。

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

technet.microsoft.com上的

[This article]帮助我找到了我找到本地条目的级别的配置文件,并解释了配置继承级别。

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

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

对ApplicationHost.config。此文件位于%windir%\ system32 \ inetsrv \ config。

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

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