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 に追加されます。

次に、Web サイトを読み込もうとすると、次のようなエラーが表示されます。

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

この svc-Integrated の重複エントリがどこから来ているのかを探すのにしばらく時間を費やしましたが、最終的に、DNN Web アプリケーションが存在する Web サイトの IIS を調べることがわかりました。Handler Mappingsのセクションがあり、Web サイト用の svc-Integrated タグがそこにあり、Entry TypeInheritedになっています。

svc-Integrated ハンドラーがどこから継承されているかを調べようとしています。

編集: c:\windows\Microsoft.NET\Framework\v2.0.50727\CONFIGmachine.configファイルとweb.configファイルを調べましたが、"svc-Integrated" というエントリはまったくありません。名前。Machine.configweb.configのそれぞれの下にあるFramework64フォルダーと v4.* フォルダーを調べてみましたが、これらの場所のいずれにも svc-Integrated がないため、IIS がどこで取得されているのか少しもわかりません。 :(からのこのハンドラー定義

4

1 に答える 1

1

ハンドラーのエントリ タイプInheritedの場合、インターネット インフォメーション サービス (IIS) マネージャーの左側にある [接続] パネルで 1 つ上のレベルに移動し、[ハンドラー マッピング] をダブルクリックすると、ハンドラーがどこから継承されたかを確認できます。サーバー コンポーネントグループにあります。そのレベルで同じ Handler を見つけ、それが別のレベルから継承されているかどうか、またはそのレベルに対してローカルであるかどうかを確認します。

IIS7 のマシンのハンドラー マッピングが次から来ていることがわかりました。"C:\Windows\System32\inetsrv\config\applicationHost.config"

[この記事] (technet.microsoft.com) は、ローカル エントリを見つけたレベルの構成ファイルを見つけるのに役立ち、構成の継承レベルについても説明しています。

Machine.config. このファイルは、%windir%\Microsoft.NET\Framework\framework_version\CONFIG にあります。

.NET Framework のルート Web.config。このファイルは、%windir%\Microsoft.NET\Framework\framework_version\CONFIG にあります。

ApplicationHost.config。このファイルは、%windir%\system32\inetsrv\config にあります。

そこに、探していた svc-Integrated 構成エントリが見つかりました。

アプリケーションのハンドラー マッピングでsvc-Integratedハンドラー マッピングを右クリックし、[削除] をクリックするだけで終わりました。これにより、アプリケーションがハンドラー マッピングを上書きしようとしていた競合が修正されました。

于 2013-04-30T14:42:47.953 に答える