.NET表单身份验证不支持';行不通

.NET表单身份验证不支持';行不通,.net,vb.net,webforms,forms-authentication,.net,Vb.net,Webforms,Forms Authentication,我的.NET应用程序有问题,有时只能在客户端位置复制,这使得它非常难以解决。在应用程序中使用表单身份验证。有一个登录页面,每个匿名用户都会被重定向到该页面。用户输入用户名和密码后,它将重定向到DefaultURL或某个预定义页面。问题是,有时当用户输入正确的用户名和密码时,它不会登录,而只是刷新登录页面而没有任何错误消息。在多次尝试输入用户名和密码后,用户可以登录到系统 请参阅我的登录页面提交\单击下面的代码: Dim userName As String = tbUsername.Te

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

请参阅我的登录页面提交\单击下面的代码:

    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
用户:不适用
计算机:TWDWEB1
说明:
事件代码:4006
事件消息:成员资格凭据验证失败。
活动时间:2010年4月29日上午11:55:56
活动时间(UTC):2010年4月29日下午3:55:56
事件ID:9e5aea5a6d6b4f7a96fc38a334d181dd
事件顺序:26
事件发生率:4
事件详细信息代码:0

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

流程信息:
进程ID:7948
进程名称:w3wp.exe
帐户名称:NT授权\网络服务

请求信息:
请求URL:
请求路径:
用户主机地址:
用户:
已验证:False
身份验证类型:
线程帐户名称:NT授权\网络服务

要验证的名称:xxxxxx

自定义事件详细信息:

有关更多信息,请参阅位于的帮助和支持中心

你所说的“客户位置”是什么意思。您的意思是从客户机登录(与从其他任何地方登录相同的web服务器),还是说他们有自己的网站副本


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

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

所谓“客户端位置”,我指的是发出请求的机器(实际上是多台机器)。服务器是相同的,这意味着当我试图从我的机器上复制它时,我使用的服务器与客户端使用的服务器相同。我不使用WebFarm,只是运行应用程序的IIS的一个实例。这是否为你提供了可能发生的事情的线索?谢谢。您可以使用类似的方法查看请求/响应,以了解您的机器与出现问题的机器之间的区别。问题是,这种情况只会偶尔发生。我认为在配置错误的情况下,每次都应该给出一个错误。问题是,有时它允许登录,有时用户不能登录,但在多次输入用户名和密码后,它会登录。