覆盖应用程序根URL实际上做了什么?

时间:2017-05-10 09:36:23

标签: c# asp.net iis visual-studio-2015 virtual-directory

整个互联网上唯一可以找到解释的地方是MSDN

  

指定应用程序根URL的备用路径。用这个   选项,如果Web应用程序根目录不是项目的根目录。

here我明白“应用程序根目录”是在ASP.NET中使用代字号时检索的路径。所以我希望如果我去项目的属性 - Web - “覆盖应用程序root”并指定另一个url,那么代字号将映射到该url。

但事实并非如此。例如,我的网站位于虚拟目录中 - http://localhost/WebApplication1 在“覆盖应用程序根目录”上,我尝试指定http://localhost/WebApplication2http://localhosthttp://WebApplication2(这些都存在于我的本地IIS上)。现在我写的时候

Response.Redirect("~/test2/login");

我希望它能将我重定向到http://localhost/WebApplication2/test2/login。 但是它将我重定向到http://localhost/WebApplication1/test2/login,好像我没有覆盖“应用程序根”。

那么这个功能真的应该做什么?或者它可能不起作用,因为我遗漏了一些东西并没有正确定义它?

1 个答案:

答案 0 :(得分:9)

覆盖应用程序根URL不会更改应用程序根目录在应用程序中的位置。它会更改用于访问应用程序根目录的URL。由于IIS会执行某些主机名验证,因此用于指定是否要通过localhost:[PORT]以外的方式访问您的应用程序。

例如,如果您将其覆盖为www.myapp.com,则可以通过将其添加到您的主机文件来访问您的应用:

127.0.0.1     www.myapp.com

如果您将应用程序提供给远程设备(计算机上的虚拟机或网络上的移动设备),这可能特别有用,因为它们无法导航到{{1} }作为申请地址。