【问题标题】:ASP.NET Membership API not working on Win2008 server/IIS7ASP.NET Membership API 在 Win2008 服务器/IIS7 上不起作用
【发布时间】:2010-06-07 09:28:44
【问题描述】:

我有一个非常奇怪的问题。我有一个使用 .NET Membership API 来提供登录功能的网络应用程序。

这在我的本地开发机器上运行良好,使用 WebDev 4.0 服务器。

我正在使用带有一些 URL 重写的 .NET 4.0,但不是在需要登录的页面上。

我有一个带有 IIS7 的 Windows Server 2008

但是,Membership API 似乎无法在服务器上运行。我已经设置了远程调试,并且 LoginUser 控件的 LoginUser.LoggedIn 事件可以正常触发,但 MembershipUser 为空。我没有得到关于用户名/密码无效的答案,所以它似乎正在识别它。

如果我输入了无效的用户名/密码,我会收到无效的用户名/密码响应。

一些代码,如果有帮助的话:

<asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="validation-error-list" ValidationGroup="LoginUserValidationGroup"/>
<div class="accountInfo">
    <fieldset class="login">
        <legend>Account Information</legend>
        <p>
            <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
            <asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>
            <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
                 CssClass="validation-error" Display="Dynamic" ErrorMessage="User Name is required." ToolTip="User Name is required." 
                 ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
        </p>
        <p>
            <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
            <asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
            <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" 
                 CssClass="validation-error" Display="Dynamic" ErrorMessage="Password is required." ToolTip="Password is required." 
                 ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
        </p>
        <p>
            <asp:CheckBox ID="RememberMe" runat="server"/>
            <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
        </p>
    </fieldset>
    <p class="login-action">
        <asp:Button ID="LoginButton" runat="server" CommandName="Login" CssClass="submitButton" Text="Log In" ValidationGroup="LoginUserValidationGroup"/>
    </p>
</div>

以及背后的代码:

protected void Page_Load(object sender, EventArgs e)
{
    LoginUser.LoginError += new EventHandler(LoginUser_LoginError);
    LoginUser.LoggedIn += new EventHandler(LoginUser_LoggedIn);
}

void LoginUser_LoggedIn(object sender, EventArgs e)
{
    // this code gets run so it appears logins work
    Roles.DeleteCookie(); // this behaviour has been removed for testing - no difference
}

void LoginUser_LoginError(object sender, EventArgs e)
{
    HtmlGenericControl htmlGenericControl = LoginUser.FindControl("errorMessageSpan") as HtmlGenericControl;
    if (htmlGenericControl != null) htmlGenericControl.Visible = true;
}

我对登录表单响应进行了“摆弄”,并且得到了以下 Cookie-Set 标头:

Set-Cookie: ASP.NET_SessionId=lpyyiyjw45jjtuav1gdu4jmg; path=/; HttpOnly
Set-Cookie: .ASPXAUTH=A7AE08E071DD20872D6BBBAD9167A709DEE55B352283A7F91E1066FFB1529E5C61FCEDC86E558CEA1A837E79640BE88D1F65F14FA8434AA86407DA3AEED575E0649A1AC319752FBCD39B2A4669B0F869; path=/; HttpOnly
Set-Cookie: .ASPXROLES=; expires=Mon, 11-Oct-1999 23:00:00 GMT; path=/; HttpOnly

我不知道这里有什么用处,因为它显然是加密的,但我发现 .APXROLES cookie 没有任何有趣的价值。好像注册cookie失败,但是认证通过了。


更新:

  1. 已在经典模式和集成模式下尝试过:行为相同

  2. ASP.NET 用户 NETWORK SERVICE (NT AUTHORITY/NETWORK SERVICE) 拥有所有 aspnet_* 角色的成员资格。

【问题讨论】:

  • 您的 Web.config 设置是什么?
  • @abatishchev:感谢您的回复。这个问题是从六月开始的,我已经设法解决了。别问我怎么了,是很久以前的事了!
  • 你和你有同样的问题.. 托管敌人会员资格很难我也在搜索这个..

标签: c# asp.net iis-7 asp.net-membership asp.net-4.0


【解决方案1】:

确保您在 IIS 中将 formauth 设置为安全类型。

在此处查找身份验证类型:http://learn.iis.net/page.aspx/142/understanding-iis-url-authorization/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2017-02-21
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    相关资源
    最近更新 更多