O arquivo configSource 'connections.config' também é usado em um pai, isso não é permitido.

9

Questão:

Eu enfrento a seguinte situação:

Um aplicativo Web do ASP.NET .NET 4.0 implantado na máquina "vmsomething".

O aplicativo Web em execução no IIS 7.5 reside em d: \ webs \ myapplication em vmsomething.

Os arquivos de configuração do aplicativo:

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>

Em seguida, é possível acessar o aplicativo de duas maneiras:
Método um: http://vmsomething.com
Método dois: http://vmsomething.com/my_application_virtdir
(sem .com, não é possível adicionar links locais)

Agora posso abrir o aplicativo em http://vmsomething.com .
Se eu tentar abrir o aplicativo em http://vmsomething.com/my_application_virtdir , eu recebo este erro:

Erro de configuração

Eu não sou o administrador do servidor e não sei como ele o configurou.
Agora a minha pergunta:

  • O que causa esse erro?
  • Como corrigi-lo ?
Dilema
fonte

Respostas:

9

O motivo é que você tem dois sites direcionados para a mesma pasta física. E existe uma herança no web.config .

http://vmsomethingé o pai e http://vmsomething/my_application_virtdiré seu filho. O filho web.config herda todos os elementos de seu pai. E o web.config geralmente não foi projetado para funcionar nesse cenário. Você pode ter muitas dores de cabeça quando outros utilitários instalados a partir do nuget tentarão modificar o seu web.config.

Se você deseja acessar seu site http://vmsomething/my_application_virtdir, acho que a solução mais fácil será alterar o caminho físico para http://vmsomethingalgo diferente.

Se você quiser testar como o site funciona sem especificar o virtdir, configure um site separado no IIS (não o Site Padrão) e direcione-o para o mesmo caminho físico. Em seguida, você poderá testar os dois modos de implantação ao mesmo tempo.

Stanislav
fonte