整个互联网上唯一可以找到解释的地方是MSDN:
指定应用程序根URL的备用路径。用这个 选项,如果Web应用程序根目录不是项目的根目录。
从here我明白“应用程序根目录”是在ASP.NET中使用代字号时检索的路径。所以我希望如果我去项目的属性 - Web - “覆盖应用程序root”并指定另一个url,那么代字号将映射到该url。
但事实并非如此。例如,我的网站位于虚拟目录中 - http://localhost/WebApplication1
在“覆盖应用程序根目录”上,我尝试指定http://localhost/WebApplication2
或http://localhost
或http://WebApplication2
(这些都存在于我的本地IIS上)。现在我写的时候
Response.Redirect("~/test2/login");
我希望它能将我重定向到http://localhost/WebApplication2/test2/login
。
但是它将我重定向到http://localhost/WebApplication1/test2/login
,好像我没有覆盖“应用程序根”。
那么这个功能真的应该做什么?或者它可能不起作用,因为我遗漏了一些东西并没有正确定义它?
答案 0 :(得分:9)
覆盖应用程序根URL不会更改应用程序根目录在应用程序中的位置。它会更改用于访问应用程序根目录的URL。由于IIS会执行某些主机名验证,因此用于指定是否要通过localhost:[PORT]
以外的方式访问您的应用程序。
例如,如果您将其覆盖为www.myapp.com
,则可以通过将其添加到您的主机文件来访问您的应用:
127.0.0.1 www.myapp.com
如果您将应用程序提供给远程设备(计算机上的虚拟机或网络上的移动设备),这可能特别有用,因为它们无法导航到{{1} }作为申请地址。