2010-10-04 48 views
22

我已經繼承了一堆包含硬編碼路徑的web應用程序的代碼。我一直試圖使用https://運行它。從.net中的HttpContext中檢測https?

除了檢測URL中的「https://」之外,還有更多帶內方法來檢測當前上下文是否爲https?

尋找類似:

System.Web.HttpContext.Current.Request.Url。 Protocol.ToString()

回答

42

您可以使用HttpContext.Current.Request.IsSecureConnection

12

的直接回答您的要求爲類似System.Web.HttpContext.Current.Request.Url.Protocol.ToString()System.Web.HttpContext.Current.Request.Url.Scheme,但正如布蘭登說,在his answerHttpContext.Current.Request.IsSecureConnection是檢測使用HTTPS方式作爲布爾值,可能更適合您在問題中給出的問題。

2

我使用此代碼自動重定向到HTTPS

If HttpContext.Current.Request.IsSecureConnection.Equals(False) Then 
    Response.Redirect("https://" + Request.ServerVariables("HTTP_HOST") & HttpContext.Current.Request.RawUrl) 
End If 
+0

爲什麼downvote? – 2012-10-02 15:57:14

+1

可能是「.Equals(False)」位。雖然它應該起作用,但用這種方式編寫代碼沒有任何意義。另外,你不應該在VB中使用+作爲字符串連接。 – 2012-12-18 22:07:29