configSource 파일 'connections.config'도 상위에서 사용되며 허용되지 않습니다.


9

질문:

다음과 같은 상황에 직면합니다.

"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=&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>

그런 다음 두 가지 방법으로 응용 프로그램에 액세스 할 수 있습니다.
방법 1 : http://vmsomething.com
방법 2 : http://vmsomething.com/my_application_virtdir(.com
없이 로컬 링크를 추가 할 수 없음)

이제 http://vmsomething.com 에서 응용 프로그램을 열 수 있습니다 . http://vmsomething.com/my_application_virtdir
에서 응용 프로그램을 열려고하면 이 오류가 발생합니다.

구성 오류

나는 서버의 관리자가 아니며 그가 어떻게 구성했는지 모르겠습니다.
이제 내 질문에 :

  • 이 오류의 원인은 무엇입니까?
  • 고치는 방법?

답변:


9

그 이유는 동일한 실제 폴더를 대상으로하는 두 개의 웹 사이트가 있기 때문입니다. 그리고 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에서 별도의 웹 사이트를 구성하고 동일한 실제 경로를 대상으로 지정할 수 있습니다. 그런 다음 두 가지 배포 방법을 동시에 테스트 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.