扩展Request.IsSecureConnection属性

时间:2015-04-23 13:01:43

标签: asp.net vb.net

我实际上不确定这是否可以在VB.NET中使用,但我正在尝试扩展内置属性Request.IsSecureConnection

我在反向代理上使用SSL卸载,因此命中该节点的所有连接将始终为Request.IsSecureConnection返回false。如果标题不存在,我自己的扩展会首先检查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 个答案:

答案 0 :(得分:1)

MSDN说:

  

如果扩展方法具有相同的签名,则永远不会调用它   作为类型中定义的方法。

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

所以我怀疑你使用扩展方法无法达到你想要的效果。