簡體   English   中英

ASP.NET成員資格API在Win2008服務器/ IIS7上不起作用

[英]ASP.NET Membership API not working on Win2008 server/IIS7

我有一個很奇怪的問題。 我有一個使用.NET Membership API提供登錄功能的Web應用程序。

使用WebDev 4.0服務器,在我的本地開發機器上運行良好。

我正在使用帶有某些URL重寫的.NET 4.0,但未在需要登錄的頁面上使用。

我有一個帶有IIS7的Windows Server 2008

但是,成員資格API似乎在服務器上不起作用。 我已經設置了遠程調試,並且LoginUser控件的LoginUser.LoggedIn事件被觸發,但是MembershipUser為null。 我沒有收到有關用戶名/密碼無效的答案,因此似乎可以識別它。

如果輸入無效的用戶名/密碼,則會收到無效的用戶名/密碼響應。

一些代碼,如果有幫助的話:

<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;
}

我的登錄表單響應為“ Fiddled”,並且得到以下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用戶網絡服務(NT AUTHORITY / NETWORK SERVICE)具有所有aspnet_ *角色的成員身份。

確保已在IIS中將FormsAuth設置為安全類型。

在此處查找身份驗證類型: http : //learn.iis.net/page.aspx/142/understanding-iis-url-authorization/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM