【问题标题】:How to use URL routing with multiple environments?如何在多个环境中使用 URL 路由?
【发布时间】:2011-04-13 20:46:36
【问题描述】:

我需要能够使用 url 路由的三种不同环境:

  1. 调试
  2. 直播
  3. 演示

这三个的主页是:

  1. http://localhost:48060/Login.aspx
  2. http://192.168.0.145/Live/Login.aspx
  3. http://www.website.com/Demo/Login.aspx

Live 和 Demo 与 Web 应用程序位于相同的默认网站中(live 仅在内部公开,而 demo 在外部公开)。

我想将这些映射到

  1. http://localhost:48060/login
  2. http://192.168.0.145/Live/login
  3. http://www.website.com/Demo/login

在不将每个路由映射重复三次的情况下,推荐的方法是什么?

谢谢!

我如何为 Debug env 添加路由的示例:

routes.MapPageRoute("Login", "login", "~/Views/Login.aspx");

更多信息:

当我尝试添加时

 routes.MapPageRoute("Login", "login", "~/Live/Views/Login.aspx");
 routes.MapPageRoute("Login", "login", "~/Demo/Views/Login.aspx");

路线不起作用。尝试访问 http://192.168.0.145/Live/login 时收到 404 错误,不知道是什么问题。

我将 IIS 7.1 用于已发布版本以及 Win XP pro 用于调试的任何版本。

【问题讨论】:

    标签: c# asp.net .net-4.0 webforms url-routing


    【解决方案1】:

    您的“环境”似乎是应用程序根目录的子目录。由于三个 URL 中的第一个不包含第二个值(例如“http://localhost:48060/debug/login”),因此为所有三个定义一个路由并不容易。

    如果这些辅助环境被定义为它们自己的应用程序,那么您应该能够在每个环境中使用相同的路由,但我们需要更多详细信息来进一步帮助您。

    请更好地描述你的情况,我会用更多信息更新我的答案。

    【讨论】:

    • 使用 ASP.NET 网络服务器和调试器在本地运行时,它不使用子文件夹(无 Debug 文件夹)。我将它发布到 Web 服务器上的子文件夹(实时或演示)。我不明白你还想让我在我的问题中说什么。
    • 我特地问过您子文件夹是否被标记为应用程序。我真的不能把这个要求说得更清楚。
    • 我明白了。是的,它被标记为应用程序。 (现场和演示)
    • 我开始对您的回答有了更多了解。由于 tilda (~) 指向应用程序根目录,因此我的路线应该适用于所有三个。唯一的问题是该路线不适用于所有三个。也许是我不知道的 IIS 设置?
    【解决方案2】:

    原来是 m$ 忘记提及的配置问题。通过修改我的 web.config 以使用 runAllManagedModulesForAllRequests 使其工作

      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
    

    【讨论】:

    • 啊,是的,就可以了。很高兴你得到了修复。
    猜你喜欢
    • 2015-10-26
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2022-10-24
    • 2014-03-31
    • 2021-07-08
    • 1970-01-01
    相关资源
    最近更新 更多