如何让asp.net-mvc-3在AppHarbor上自动处理长尾词URL?
- 内容介绍
- 文章标签
- 相关推荐
本文共计475个文字,预计阅读时间需要2分钟。
我正在尝试在AppHarbor上托管一个MVC+3应用程序(FunnelWeb)。由于我不太清楚原因,我的路由仅由一个控制器操作(例如,mysite+/admin是管理员搜索索引,mysite+/登录是管理员登录)。一切看起来都很正常,但如果‘出现在URL中,则会发生异常。
我正在尝试在AppHarbor上托管一个MVC 3应用程序(FunnelWeb).由于我仍然不清楚的原因,当我的路线只是一个控制器动作(例如,mysite / admin是管理员索引,mysite /登录是管理员登录)一切正常,但如果我在路线中有其他任何东西(例如变量如{* page})我的URL将是mysite:12345 / mypage(其中12345是AppHarbor分配的端口号,mypage是我正在请求的页面的名称).这使得请求失败,因为端口12345未公开.AppHarbor使用load balancing在多个IIS之间分发请求.这是他们做事的方式,这就是内部请求被路由到一些非标准端口的原因.我没有问题,但我有一个问题,MVC尝试将我路由到该内部URL.
我不指责这里;这是没有人的错:)所以让我们转到这个问题:
>为什么请求仅具有Controller Action的路由和请求具有{* page}之类的变量的路由之间存在差异?请技术请:)
> Here是如何处理AppHarbor中的请求的示例,但是,它似乎需要我修改我的所有控制器(OMG).有没有办法在不修改我的控制器的情况下实现这个?
>欢迎任何其他建议:)
提前致谢.
更新:巧合的是,我观察到的行为符合我达成的结论.但是,该问题与ASP.Net MVC路由无关.简而言之,FunnelWeb强制使用小写URL,因此,每当收到对资源的请求时,如果需要,它会将其转换为小写,并发出301响应.问题是,在为301响应创建URL时,请求URL(绝对URL)现在是从负载均衡器向IIS发出请求时使用的URL,而不是从客户端发出的URL;因此,请求失败.
这是AppHarbor上FunnelWeb网址生成的已知问题.使用标准MVC方法生成相对URL时,这不是问题. AppHarbor在知识库中拥有 short guide and sample on how the generate public URLs个.本文共计475个文字,预计阅读时间需要2分钟。
我正在尝试在AppHarbor上托管一个MVC+3应用程序(FunnelWeb)。由于我不太清楚原因,我的路由仅由一个控制器操作(例如,mysite+/admin是管理员搜索索引,mysite+/登录是管理员登录)。一切看起来都很正常,但如果‘出现在URL中,则会发生异常。
我正在尝试在AppHarbor上托管一个MVC 3应用程序(FunnelWeb).由于我仍然不清楚的原因,当我的路线只是一个控制器动作(例如,mysite / admin是管理员索引,mysite /登录是管理员登录)一切正常,但如果我在路线中有其他任何东西(例如变量如{* page})我的URL将是mysite:12345 / mypage(其中12345是AppHarbor分配的端口号,mypage是我正在请求的页面的名称).这使得请求失败,因为端口12345未公开.AppHarbor使用load balancing在多个IIS之间分发请求.这是他们做事的方式,这就是内部请求被路由到一些非标准端口的原因.我没有问题,但我有一个问题,MVC尝试将我路由到该内部URL.
我不指责这里;这是没有人的错:)所以让我们转到这个问题:
>为什么请求仅具有Controller Action的路由和请求具有{* page}之类的变量的路由之间存在差异?请技术请:)
> Here是如何处理AppHarbor中的请求的示例,但是,它似乎需要我修改我的所有控制器(OMG).有没有办法在不修改我的控制器的情况下实现这个?
>欢迎任何其他建议:)
提前致谢.
更新:巧合的是,我观察到的行为符合我达成的结论.但是,该问题与ASP.Net MVC路由无关.简而言之,FunnelWeb强制使用小写URL,因此,每当收到对资源的请求时,如果需要,它会将其转换为小写,并发出301响应.问题是,在为301响应创建URL时,请求URL(绝对URL)现在是从负载均衡器向IIS发出请求时使用的URL,而不是从客户端发出的URL;因此,请求失败.
这是AppHarbor上FunnelWeb网址生成的已知问题.使用标准MVC方法生成相对URL时,这不是问题. AppHarbor在知识库中拥有 short guide and sample on how the generate public URLs个.
