问题:
我面临以下情况:
部署在机器“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,我收到此错误:
我不是服务器管理员,也不知道他是如何配置的。
现在回答我的问题:
- 什么原因导致此错误?
- 如何修复它?
答案1
原因是您有两个网站针对同一个物理文件夹。并且存在一个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 中配置一个单独的网站(而不是默认网站),并将其定位到相同的物理路径。然后,您将能够同时测试两种部署方式。