2010-06-07 17 views
1

J'ai un problème très étrange. J'ai une application web qui utilise l'API .NET Membership pour fournir une fonctionnalité de connexion.L'API d'appartenance ASP.NET ne fonctionne pas sur le serveur Win2008/IIS7

Cela fonctionne très bien sur mon ordinateur de développement local, en utilisant le serveur WebDev 4.0. J'utilise .NET 4.0 avec quelques URL Rewriting, mais pas sur les pages où la connexion est requise.

J'ai un Windows Server 2008 avec IIS7

Cependant, l'API d'adhésion ne semble pas travailler sur le serveur. J'ai mis en place le débogage à distance et l'événement LoginUser.LoggedIn du contrôle LoginUser est renvoyé bien, mais l'MembershipUser est null. Je ne reçois aucune réponse à propos du nom d'utilisateur/mot de passe étant invalide donc il semble le reconnaître.

Si j'entre un nom d'utilisateur/mot de passe invalide, j'obtiens une réponse de nom d'utilisateur/mot de passe invalide.

Une partie du code, si elle aide:

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

et le code derrière:

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

je "bidouillé" avec le formulaire de connexion Reponse et je reçois les suivants têtes 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 

Je ne sais pas ce qui est utile ici car il est évidemment chiffré mais je trouve le cookie .APXROLES havin g aucune valeur intéressante. Il semble ne pas enregistrer le cookie, mais passe l'authentification.


Mises à jour:

  1. ont essayé en classique et en mode intégré: le même comportement

  2. utilisateur ASP.NET NETWORK SERVICE (NT AUTHORITY/NETWORK SERVICE) a l'adhésion de tous les Aspnet_ * rôles.

+0

Quelle est la configuration de votre web.config? – abatishchev

+0

@abatishchev: Merci pour votre réponse. Ce numéro datait de juin et j'ai réussi à le contourner. Ne me demandez pas comment, il y a longtemps! –

+0

Content d'entendre :) À votre santé! – abatishchev

Répondre