覆盖应用程序根URL真的有什么作用?
整个互联网上唯一的地方我可以在MSDN上找到解释:
指定应用程序根URL的备用路径。 如果Web应用程序根目录不是项目的根目录,请使用此选项。
从这里我理解“应用程序根”是在ASP.NET中使用波浪号时检索的路径。 所以我希望如果我去项目的属性 – Web – “覆盖应用程序root”并指定另一个url,那么代字号将映射到该url。
但事实并非如此。 例如,我的Web位于虚拟目录 – 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
,就像我没有覆盖“应用程序根”一样。
那么这个function真的应该做什么呢? 或者也许它不起作用,因为我遗漏了一些东西并没有正确定义它?
覆盖应用程序根URL不会更改应用程序根目录在应用程序中的位置。 它会更改用于访问应用程序根目录的URL。 因为IIS执行了一些主机名validation,所以它用于指定是否要通过localhost:[PORT]
以外的方式访问您的应用程序localhost:[PORT]
。
例如,如果您将其覆盖到www.myapp.com
,则可以通过将其添加到您的hosts文件来访问您的应用程序:
127.0.0.1 www.myapp.com
如果您将应用程序提供给远程设备(计算机上的虚拟机或网络上的移动设备),则这可能特别有用,因为它们无法导航到localhost
作为应用程序地址。