2015-04-23 29 views
1

我實際上不確定這是否可能在VB.NET中,但我試圖擴展內置屬性Request.IsSecureConnectionExtend Request.IsSecureConnection屬性

我在反向代理上使用SSL卸載,因此所有連接點擊節點將總是返回假爲Request.IsSecureConnection。如果標題不存在,我自己的擴展將首先檢查HTTP_X_FORWARDED_PROTO,然後回退到標準方法。

這是我到目前爲止,但是當我在這裏設置一個斷點時,這個塊永遠不會被擊中。我肯定有一個很好的理由..只是不確定是什麼原因?

Module Extensions 

    <Extension()> 
    Public Function IsSecureConnection(Request As HttpRequestBase) As Boolean 
     If HttpContext.Current.Request("HTTP_X_FORWARDED_PROTO") <> "" Then 
      Dim https As String = HttpContext.Current.Request("HTTP_X_FORWARDED_PROTO") 
      If https.ToLower = "on" Then 
       Return True 
      Else 
       Return False 
      End If 
     Else 
      Return Request.IsSecureConnection '<< Not sure here how I would reference the .net framework class without looping back into this function? 
     End If 
    End Function 

End Module 

編輯:

我想截獲此屬性,而不是寫我自己的自定義方法,是因爲我很依賴庫是引用此屬性,我不能覆蓋這個原因。

回答

1

MSDN說:

擴展方法永遠不會被它是否具有相同的簽名 作爲類型定義的方法調用。

https://msdn.microsoft.com/en-GB/library/bb383977.aspx

所以我懷疑你不能達到你想要使用哪種擴展方法。

+0

是的,我也剛剛發現這個,謝謝。我想我需要使用另一個庫。 – QFDev