覆盖应用程序根URL真的有用吗?

Bor*_*ode 16 c# asp.net iis virtual-directory visual-studio-2015

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

指定应用程序根URL的备用路径.如果Web应用程序根目录不是项目的根目录,请使用此选项.

这里我理解"应用程序根"是在ASP.NET中使用波浪号时检索的路径.所以我希望如果我去项目的属性 - Web - "覆盖应用程序root"并指定另一个url,那么代字号将映射到该url.

但事实并非如此.例如,我的网站在虚拟目录上 - http://localhost/WebApplication1 并且在"覆盖应用程序根目录"上我尝试指定或者(http://localhost/WebApplication2或者在我的本地IIS上都存在).现在我写的时候http://localhosthttp://WebApplication2

Response.Redirect("~/test2/login");
Run Code Online (Sandbox Code Playgroud)

我希望它能重定向到我http://localhost/WebApplication2/test2/login.但相反,它重定向我,http://localhost/WebApplication1/test2/login好像我没有覆盖"应用程序根".

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

Iro*_*ean 13

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

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

127.0.0.1     www.myapp.com
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您使用IISExpress进行本地开发,那么我可以看到用于配置这类内容的GUI.据我所知,您可以在构建配置中使用该选项,也可以手动编辑IISExpress配置文件. (4认同)
  • 很好的答案,我一直在寻找解释,却找不到任何地方!我仍然不明白为什么需要这样做,因为我可以在 IIS 上添加一个绑定到该网站并在“主机名”`www.myapp.com` 中定义 - 似乎它会达到完全相同的效果? (2认同)