gpt4 book ai didi

asp.net-mvc-3 - 在不修改我的所有 Controller 的情况下使用 AppHarbor 处理 URL

转载 作者:行者123 更新时间:2023-12-01 10:09:24 25 4
gpt4 key购买 nike

我正在尝试在 AppHarbor 上托管 MVC 3 应用程序 (FunnelWeb)。由于我仍然不清楚的原因,当我的路线只是一个 Controller +操作(例如,mysite/admin 是 Admin+Index 并且 mysite/login 是 Admin+login)时,一切正常,但是如果我在 route 还有其他东西(例如,像 {*page} 这样的变量)我的 URL 将是 mysite:12345/mypage(其中 12345 是 AppHarbor 分配的端口号,mypage 是我请求的页面的名称)。这会导致请求失败,因为端口 12345 未公开。

AppHarbor 使用 load balancing在多个 IIS 之间分配请求。这是他们做事的方式,这就是为什么在内部将请求路由到一些非标准端口的原因。我对此没有任何问题,但我遇到了尝试将我路由到该内部 URL 的 MVC 问题。

我不是在这里指手画脚;这不是任何人的错 :) 所以让我们转向这个问题:

  1. 为什么仅使用 Controller+Action 请求路由与使用 {*page} 等变量请求路由之间存在差异?请保持技术性:)
  2. Here是如何在 AppHarbor 中处理请求的示例,但是,它似乎需要我修改所有 Controller (OMG)。有没有办法在不修改我的 Controller 的情况下实现这一点?
  3. 欢迎任何其他建议:)

提前致谢。

更新:巧合的是,我观察到的行为与我得出的结论相符。但是,该问题与 ASP.Net MVC 路由无关。简短的故事是,FunnelWeb 强制使用小写 URL,因此,每当它收到对资源的​​请求时,如果需要,它会将其转换为小写,并发出 301 响应。问题是,在为 301 响应创建 URL 时,请求 URL(绝对 URL)现在是从负载均衡器向 IIS 发出请求时使用的 URL,而不是从客户端发出的 URL;因此,请求失败。

最佳答案

这是在 AppHarbor 上生成 FunnelWeb url 的已知问题。当使用标准 MVC 方法生成相对 URL 时,这不是问题。 AppHarbor 有一个 short guide and sample on how the generate public URLs在知识库中。

关于asp.net-mvc-3 - 在不修改我的所有 Controller 的情况下使用 AppHarbor 处理 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7120149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com