질문:
다음과 같은 상황에 직면합니다.
“vmsomething”시스템에 배포 된 ASP.NET .NET 4.0 웹 응용 프로그램
IIS 7.5에서 실행되는 웹 응용 프로그램은 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>
그런 다음 두 가지 방법으로 응용 프로그램에 액세스 할 수 있습니다.
방법 1 : http://vmsomething.com
방법 2 : http://vmsomething.com/my_application_virtdir(.com
없이 로컬 링크를 추가 할 수 없음)
이제 http://vmsomething.com 에서 응용 프로그램을 열 수 있습니다 . http://vmsomething.com/my_application_virtdir
에서 응용 프로그램을 열려고하면 이 오류가 발생합니다.
나는 서버의 관리자가 아니며 그가 어떻게 구성했는지 모르겠습니다.
이제 내 질문에 :
- 이 오류의 원인은 무엇입니까?
- 고치는 방법?
답변
그 이유는 동일한 실제 폴더를 대상으로하는 두 개의 웹 사이트가 있기 때문입니다. 그리고 web.config 에는 상속 이 있습니다 .
http://vmsomething
부모이며 http://vmsomething/my_application_virtdir
자식입니다. 자식 web.config는 부모로부터 모든 요소를 상속합니다. 그리고 web.config는 일반적으로 이러한 시나리오에서 작동하도록 설계되지 않았습니다. nuget에서 설치된 다른 유틸리티가 web.config를 수정하려고 할 때 많은 어려움을 겪을 수 있습니다.
웹 사이트에 액세스 http://vmsomething/my_application_virtdir
하려면 가장 쉬운 해결책은 실제 경로를 http://vmsomething
다른 것으로 변경하는 것입니다.
virtdir을 지정하지 않고 웹 사이트 작동 방식을 테스트하려는 경우 기본 웹 사이트가 아닌 IIS에서 별도의 웹 사이트를 구성하고 동일한 실제 경로를 대상으로 지정할 수 있습니다. 그런 다음 두 가지 배포 방법을 동시에 테스트 할 수 있습니다.