質問:
私は次の状況に直面しています:
マシン「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="MyApplication"" 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 でアプリケーションを開こうとすると、次のエラーが発生します。
私はサーバーの管理者ではないので、サーバーの構成方法がわかりません。
今私の質問に:
その理由は、同じ物理フォルダーをターゲットとする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サイトを設定し、同じ物理パスをターゲットにすることができます。両方の展開方法を同時にテストします。