Plik configSource „links.config” jest również używany w obiekcie nadrzędnym, co nie jest dozwolone.

9

Pytanie:

Mam do czynienia z następującą sytuacją:

Aplikacja internetowa ASP.NET .NET 4.0 wdrożona na komputerze „vmsomething”.

Aplikacja internetowa działająca na IIS 7.5 znajduje się w d: \ webs \ myapplication na vmsomething.

Pliki konfiguracyjne aplikacji:

connection.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>

Następnie można uzyskać dostęp do aplikacji na dwa sposoby:
Metoda pierwsza: http://vmsomething.com
Metoda druga: http://vmsomething.com/my_application_virtdir
(bez .com, nie można dodawać łączy lokalnych)

Teraz mogę dobrze otworzyć aplikację na http://vmsomething.com .
Jeśli spróbuję otworzyć aplikację na http://vmsomething.com/my_application_virtdir , otrzymuję ten błąd:

Błąd konfiguracji

Nie jestem administratorem serwera i nie wiem, jak go skonfigurował.
Teraz moje pytanie:

  • Co powoduje ten błąd?
  • Jak to naprawić ?
Kłopot
źródło

Odpowiedzi:

9

Powodem jest to, że masz dwie witryny kierowane na ten sam folder fizyczny. W web.config istnieje dziedzictwo .

http://vmsomethingjest rodzicem i http://vmsomething/my_application_virtdirjest jego dzieckiem. Podrzędny web.config dziedziczy wszystkie elementy od swojego rodzica. A web.config zwykle nie jest zaprojektowany do działania w takim scenariuszu. Możesz mieć wiele problemów, gdy inne narzędzia zainstalowane z nuget spróbują zmodyfikować twój web.config.

Jeśli chcesz uzyskać dostęp do swojej witryny, http://vmsomething/my_application_virtdirto chyba najłatwiejszym rozwiązaniem będzie zmiana fizycznej ścieżki na http://vmsomethingcoś innego.

Jeśli chcesz przetestować działanie swojej witryny bez podawania virtdir, możesz skonfigurować oddzielną witrynę w IIS (nie domyślnej witrynie) i skierować ją na tę samą ścieżkę fizyczną. Następnie będziesz mógł przetestować oba sposoby wdrażania jednocześnie.

Stanisław
źródło