5

Web サイトも含む仮想ディレクトリを持つ Web サイトを持っています。仮想ディレクトリからページを起動しようとすると、(接続文字列からの) 名前が既にコレクションにあるという IIS 7.5 エラーが表示されます。 . ドメイン ユーザーをアプリ プールの ID として追加する前は、これは問題ではありませんでした。なぜこれが起こっているのか誰にも分かりますか?サブレベル アプリケーションの web.config がデフォルトで親の web.config をオーバーライドするという印象を受けました。繰り返しますが、これはカスタム ID を追加するまでは機能していました。

ページのエラーは、「パーサー エラー メッセージ: エントリ 'dbname' は既に追加されています。」

dbname が両方の接続文字列 (つまり、親ディレクトリと仮想ディレクトリ) にある場所。仮想ディレクトリはテスト目的でのみ作成されているため、接続文字列の 1 つを削除できませんが、運用環境では独自の Web サイトとして実行されます。

4

2 に答える 2

7

アプリケーションに関係なく、サブ web.config は親をオーバーライドしません。すべての web.config は、プライマリ アプリケーションのルートまで積み上げられます。サブアプリケーション フォルダーが既に使用されている接続文字列キーを使用するには、まずそのキーを削除するか、すべての接続文字列をクリアする必要があります。これを子として本当にスタンドアロンのアプリケーションにしたい場合は、これを接続文字列に追加します。

<connectionStrings>
    <clear />
    <your connection string>
<connectionStrings>

単一の接続文字列を削除するだけの場合は、次を使用します。

<remove key="yourConnectionStringName" />
于 2013-03-22T00:08:47.920 に答える
0

@u84six、

今日、これは私に起こりました。同じルート Web サイトにいくつかの Web サイトと Web サービスがありました。ルートはデフォルトの iis Web サイト (デフォルトの Web サイト) であり、C:\Inetpub\wwwroot を指していたと思います。その開発環境です。

この回答を読んだ後、Web サービスの 1 つがルート Web サイトであることがわかりました (何が変わったのかまだわかりません... 2010 年から 2012 年に移行した後のビジュアル スタジオかもしれません)。その Web サービスは、connectionString を競合して使用していました。パスを C:\Inetpub\wwwroot\ に戻すと、すべて正常に戻りました。

もしかしたら、あなたにも似たようなことが起こったかもしれません。

于 2014-01-06T14:36:56.567 に答える