题:
我面临以下情况:
部署在机器“vmsomething”上的ASP.NET .NET 4.0 Web应用程序。
在IIS 7.5上运行的Web应用程序驻留在vmsomething上的d:\ webs \ myapplication上。
应用程序的configuration文件:
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>
<?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上的应用程序,我得到这个错误:

我不是服务器的pipe理员,我不知道他是如何configuration的。
现在我的问题:
原因是你有两个网站针对相同的物理文件夹。 在web.config中存在一个inheritance 。
http://vmsomething是父节点, http://vmsomething/my_application_virtdir是它的子http://vmsomething/my_application_virtdir 。 子web.configinheritance父级的所有元素。 web.config通常不是为了在这种情况下工作而devise的。 当从nuget安装的其他实用程序将尝试修改您的web.config时,您可以得到很多头痛。
如果你想访问你的网站http://vmsomething/my_application_virtdir那么我想最简单的解决scheme是将http://vmsomething的物理path更改为不同的东西。
如果你想在没有指定virtdir的情况下testing你的网站是如何工作的,你可以在IIS(而不是默认网站)中configuration一个单独的网站,并把它定位到相同的物理path。 然后,您将能够同时testing两种部署方式。