【问题标题】:What does Override application root URL really do?覆盖应用程序根 URL 的真正作用是什么?
【发布时间】:2017-10-08 21:05:12
【问题描述】:

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

指定应用程序根 URL 的替代路径。用这个 如果 Web 应用程序根不是项目的根,则该选项。

来自here 我了解到“应用程序根目录”是在 ASP.NET 中使用波浪号时检索的路径。因此,我希望如果我转到项目的属性 - Web - “覆盖应用程序根目录”并指定另一个 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,就好像我没有覆盖“应用程序根目录”一样。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    127.0.0.1     www.myapp.com
    

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

    【讨论】:

    • 好答案,我一直在寻找解释,但找不到任何地方!我仍然不明白为什么需要这样做,因为我可以将 IIS 上的绑定添加到该网站并在“主机名”www.myapp.com 中定义 - 似乎它会达到完全相同的效果?
    • 如果您使用 IISExpress 进行本地开发,那么我可以看到用于配置此类内容的 GUI 并不多。据我所知,您可以在构建配置中使用该选项,也可以手动编辑 IISExpress 配置文件。
    猜你喜欢
    • 2017-12-12
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多