2015-04-18 37 views
0

相关问题:here - here力HTTPS上Appharbor

我有部署在appharbor ASP.NET应用程序。手动导航到其https:// url工作正常,但我想只有使用HTTPS。即,如果我收到HTTP请求,则重定向到HTTPS。

有两种方法可以实现这一点,我知道:(1)使用web.config,由于X-Forwarded-Proto头被appharbor上的load-balancer剥离, ?)或(2)制作一个自定义httpattribute如图here

不幸的是,这些方法对我都很好 - 。两者都让我有重定向循环:(所有的答案我能看到的是相当老了,有什么改变了appharbor/asp.net,我应该知道的?

提前

感谢。

回答

2

是否使用MVC我你的申请?该属性是为它准备的。

如果只是普通的ASP.NET,您可以使用HTTP ModulesGlobal.asax来达到相同的效果。

RequireHttpsAttribute by Rune应该工作。我在AppHarbor上使用ServiceStack,但基于我从Rune的代码中使用的属性。它今天仍在使用。

AppHb的负载平衡器将设置X-Forwarded-Proto标头以匹配传入协议方案(http或https),因为来自负载平衡器的流量将作为HTTP转发到您的应用程序的IIS实例(因此原始方案会丢失) 。

+0

我正在使用MVC,是的。我真的不知道我做错了什么。 我复制/粘贴了符文的代码,并将其更名为MyRequireHttpsAttribute 然后,我在其中一个控制器的所有方法的顶部添加了[MyRequireHttpsAttribute]。 现在得到一个关于太多重定向的错误 – user1202032

+0

你是否仍然在自己的代码中调用自己的重定向,或者只有属性?您的请求期间RequireHttpsAttribute肯定会受到影响吗? – Tyst

+0

我把属性放在我的控制器类的顶部,而不是在单独的方法之上。此外,我将该属性从“App_Start”折叠移至其自己的文件夹。这似乎解决了我的问题,现在我一直使用https连接。我不知道我完全理解为什么,但。感谢你的协助 – user1202032