configSourceファイル「connections.config」も親で使用されていますが、これは許可されていません。


9

質問:

私は次の状況に直面しています:

マシン「vmsomething」にデプロイされたASP.NET .NET 4.0 Webアプリケーション。

IIS 7.5で実行されているWebアプリケーションは、vmsomethingのd:\ webs \ myapplicationにあります。

アプリケーションの構成ファイル:

connections.config

<?xml version="1.0"?>
<connectionStrings>
  <remove name="server"/>
  <add name="server" connectionString="Data Source=OUR_DB_Server;Initial Catalog=MY_INITIAL_CATALOG;Persist Security Info=False;User Id=OUR_DB_User;Password=OUR_TOP_SECRET_PASSWORD;MultipleActiveResultSets=False;Packet Size=4096;Application Name=&quot;MyApplication&quot;" providerName="System.Data.SqlClient"/>
</connectionStrings>

web.config:

<?xml version="1.0"?>
<configuration>

  <connectionStrings configSource="connections.config"/>

  <system.web>
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>
    <compilation strict="true" explicit="true">
      <assemblies>
        <add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="Microsoft.JScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
      </assemblies>
    </compilation>
    <authentication mode="Windows"/>
    <pages>
      <namespaces>
        <clear/>
        <add namespace="System"/>
      </namespaces>
    </pages>
    <customErrors mode="Off">
      <error statusCode="404" redirect="~/w8/index.html"/>
    </customErrors>
    <globalization uiCulture="de" culture="de-CH" requestEncoding="UTF-8" responseEncoding="UTF-8"/>
    <httpRuntime maxRequestLength="2048000" executionTimeout="86400"/>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>
</configuration>

次に、2つの方法でアプリケーションにアクセスできます:
方法1:http : //vmsomething.com
方法2:http : //vmsomething.com/my_application_virtdir
(.comがない場合、ローカルリンクを追加できません)

これで、http://vmsomething.comでアプリケーションを問題なく開くことができます。http://vmsomething.com/my_application_virtdir
アプリケーションを開こうとすると、次のエラーが発生します。

設定エラー

私はサーバーの管理者ではないので、サーバーの構成方法がわかりません。
今私の質問に:

  • このエラーの原因は何ですか?
  • それを修正するには?

回答:


9

その理由は、同じ物理フォルダーをターゲットとする2つのWebサイトがあるためです。また、web.configに継承が存在します。

http://vmsomethingは親でhttp://vmsomething/my_application_virtdirあり、その子です。子web.configは、親からすべての要素を継承します。また、web.configは通常、このようなシナリオで機能するようには設計されていません。nugetからインストールされた他のユーティリティがweb.configを変更しようとすると、多くの頭痛の種になる可能性があります。

あなたがあなたのウェブサイトにアクセスしたいのであればhttp://vmsomething/my_application_virtdir、私は最も簡単な解決策は物理パスをhttp://vmsomething別のものに変更することだと思います。

virtdirを指定せずにWebサイトがどのように機能するかをテストする場合は、IISで別のWebサイト(デフォルトのWebサイトではない)を構成して、同じ物理パスをターゲットにすることができます。次に、両方の展開方法を同時にテストできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.