【问题标题】:Why does my if else return false?为什么我的 if else 返回 false?
【发布时间】:2013-10-24 14:35:47
【问题描述】:

在我的 Appcode 文件夹中,如上所示,我有一个名为 BaseClass 的类。在 BaseClass 中,我有一个名为 CheckWAN() 的函数,它定义了 IP 范围,以便以后我可以通过本地用户的 IP 地址范围自动对我的站点进行身份验证。

Public Function CheckWAN() As Boolean
    Try
        Dim url As String = Request.Url.ToString()
        'Get the client ip address
        Dim RemoteAddress As String = Request.UserHostAddress
        Dim strRemoteAddress As String = RemoteAddress
        Dim myWAN As String = "192.168.254.254"
        'add Some other ips
        Dim SOther001 As String = "192.168.254.1"
        Dim SOther002 As String = "192.168.254.2"
        Dim SOther003 As String = "192.168.254.3"
        If strRemoteAddress.Contains(myWAN) Then
            Return True
        ElseIf strRemoteAddress.Contains(SOther001) Then
            Return True
        ElseIf strRemoteAddress.Contains(SOther002) Then
            Return True
        ElseIf strRemoteAddress.Contains(SOther003) Then
            Return True
        Else
            Return False
        End If
    Catch
        Return False
    End Try
End Function

最后,我在站点 default.aspx 上设置了一个登录名,如果If CheckWAN() 返回 true,则检查连接用户的 IP 地址,然后我会传递到内容页面,但如果它是 false,则显示我的登录信息显示它返回错误

Public Class BaseClass
    Inherits System.Web.UI.Page

If CheckWAN() = True Then
    Response.Redirect("/content.aspx")
Else
    Response.Write("The CheckWAN is returning False") 
    'this else also causes a redirect loop if its changed to 
    'Response.Write(/default.aspx) not sure why
End If

我还检查了网络以验证我的代码中使用的 IP 并且它们都是有效的。

已编辑! 这是 Request.UserHostAdress 返回的内容 debug

【问题讨论】:

  • 你确定你的毯子 Try/Catch (return false) 没有触发的代码中没有错误吗?
  • 你确定是else返回False而不是抛出异常并且catch中的False被返回?
  • 您是否在调试模式下单步执行?
  • 是什么阻止您检查正在使用的确切值?打印出strRemoteAddress(或输入调试并查看其值)。很可能是 127.0.0.1 或类似的(如果您要连接到本地计算机上的服务器)
  • 你需要单步执行,看看运行时strRemoteAddress的值是多少

标签: asp.net vb.net


【解决方案1】:

首先,这甚至不应该编译。显然是这样,所以你必须有Option Strict OffRequest.UserHostAdress 返回一个复杂对象,并且您将变量声明为字符串。我怀疑你真正想要的是那个对象的一些属性,虽然我不知道是哪一个。

【讨论】:

  • “Request.UserHostAddress 返回一个复杂对象”,错了,不……它返回一个字符串。
  • 你是对的。我应该仔细看看他的截图。
猜你喜欢
  • 2016-11-14
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2021-12-06
  • 2019-12-29
  • 2010-11-28
相关资源
最近更新 更多