加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 使用AppHarbor处理URL而不修改所有我的控制器

发布时间:2020-12-16 09:22:57 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试在AppHarbor上托管一个MVC 3应用程序(FunnelWeb).由于我仍然不清楚的原因,当我的路线只是一个控制器动作(例如,mysite / admin是管理员索引,mysite /登录是管理员登录)一切正常,但如果我在路线中有其他任何东西(例如变量如{* page})我的URL将是mysi
我正在尝试在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个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读