检查引荐来源是否存在

osh*_*nen 1 vb.net asp.net .net-1.1

在我的代码中,我想检查引用者URL是否存在以及引用者URL是否包含特定子字符串.我知道如何检查子字符串:

If( InStr( Request.UrlReferrer.ToString(), "some sub string here" ) > 0 ) Then
Run Code Online (Sandbox Code Playgroud)

但我不知道如何检查推荐人是否存在.如果在地址栏中手动输入URL,则不存在引用.所以我尝试了这个,但这不起作用:

If (Not (Request.UrlReferrer.ToString() = "")) And (InStr(Request.UrlReferrer.ToString(), "some sub string here") > 0) Then
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何检查推荐人是否存在?

bgs*_*264 5

我认为您的问题是And在您应该使用时使用AndAlso.

And不是短路的.因此,运行时将评估任何方面的每一侧And,然后true如果双方都返回则返回true.所以你可能会得到一个NullReferenceException猜测,因为你试图查看引用者是否包含某些东西,当引用者为空时,因为你没有使用短路评估.

相反,AndAlso如果前半部分是假的,则是短路并且不会费心去评估声明的后半部分.

我从来没有找到一个很好的,令人信服的理由And在VB中使用而不是AndAlso.

无论如何这应该适合你.

If (Not IsNothing(Request.UrlReferrer)) AndAlso Request.UrlReferrer.ToString.Contains("substring") Then
    Dosomething
End If
Run Code Online (Sandbox Code Playgroud)