2015-04-23 68 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