.NET表单身份验证不起作用

时间:2011-03-20 03:26:08

标签: .net vb.net webforms forms-authentication

我的.NET应用程序存在问题,有时只能在客户端的位置进行复制,这使得解决起来非常困难。在应用程序中使用表单身份验证。有一个登录页面,每个匿名用户都被重定向到该登录页面。用户输入用户名和密码后,会重定向到DefaultURL或某个预定义页面。问题是,有时当用户输入正确的用户名和密码时,它不会登录,而只是刷新登录页面而没有任何错误消息。在多次输入用户名和密码后,用户可以登录系统。

请参阅我的登录页面Submit_Click代码如下:

    Dim userName As String = tbUsername.Text
    Dim password As String = tbPassword.Text
    Dim returnUrl As String = Request("returnUrl")

    If IsValidated() Then
        FormsAuth.SignIn(userName, False)

        If password = WebConfigurationManager.AppSettings("PasswordDefault") Then
            FlashMessage.ErrorMessage("You have default password """ & password & """. Please change it")
            Response.Redirect("~/ChangePassword.aspx")
        End If
        If Not String.IsNullOrEmpty(returnUrl) Then
            Response.Redirect(returnUrl)
        Else
            If Roles.IsUserInRole(userName, Constants.SOME_ROLE) Then
                Response.Redirect("~/Forms/SomePage.aspx")
            Else
                Response.Redirect("~/Default.aspx")
            End If
        End If
    Else

    End If

更新:
我检查了Windows事件查看器,它有以下事件:

  

活动类型:信息
  事件来源:ASP.NET 2.0.50727.0
  活动类别:网络活动
  事件ID:1315
  日期:2010年4月29日
  时间:上午11:55:56
  用户:N / A
  电脑:TWDWEB1
  说明:
  活动代码:4006
  事件消息:成员身份凭证验证失败   活动时间:2010年4月29日上午11:55:56   活动时间(UTC):2010年4月29日下午3:55:56
  事件ID:9e5aea5a6d6b4f7a96fc38a334d181dd
  事件顺序:26
  事件发生:4
  活动详细代码:0

     

申请信息:
     应用领域:/ LM / W3SVC / 1 / Root / DataManipulationsService-1-129170192766483624
     信任等级:全满      应用程序虚拟路径:/ DataManipulationsService
     应用程序路径:F:\ Development \ DataManipulationsService \
     机器名称:TWDWEB1

     

流程信息:
     制造商ID:7948
     进程名称:w3wp.exe
     帐户名称:NT AUTHORITY \ NETWORK SERVICE

     

索取信息:
     请求网址:
     请求路径:
     用户主机地址:
     用户:
     经过验证:错误      验证类型:
     线程帐户名称:NT AUTHORITY \ NETWORK SERVICE

     

要进行身份验证的名称:xxxxxx

     

自定义活动详情:

     

有关详情,请参阅http://go.microsoft.com/fwlink/events.asp上的“帮助和支持中心”。

2 个答案:

答案 0 :(得分:0)

“客户所在地”是什么意思?您是指从客户端的计算机登录(与您从其他任何地方登录到同一个Web服务器),还是说他们拥有自己的网站副本?

在不知道该问题的答案的情况下,我建议的第一件事是,如果您是从Web场运行,则需要确保设置web.config文件中的machineKey元素并且在Web场中的每个服务器上都是相同的。

答案 1 :(得分:0)

在signin()调用周围添加一个try / catch块。如果由于客户端系统上的某些配置错误而导致该调用失败,则可以将错误公开给用户或日志。也许代码正在进行任何可能掩盖错误的异常处理?