Iis

configSource 文件“connections.config”也用於父級,這是不允許的。

  • August 6, 2014

問題:

我面臨以下情況:

部署在機器“vmsomething”上的 ASP.NET .NET 4.0 Web 應用程序。

在 IIS 7.5 上執行的 Web 應用程序位於 vmsomething 上的 d:\webs\myapplication 中。

應用程序的配置文件:

連接配置

<?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>

網路配置:

<?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>

然後可以通過兩種方式訪問應用程序:

方法一:http: //vmsomething.com

方法二: 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(不是預設網站)中配置一個單獨的網站並將其定位到相同的物理路徑。然後,您將能夠同時測試兩種部署方式。

引用自:https://serverfault.com/questions/578658