2015-04-18 36 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