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:
ont essayé en classique et en mode intégré: le même comportement
utilisateur ASP.NET NETWORK SERVICE (NT AUTHORITY/NETWORK SERVICE) a l'adhésion de tous les Aspnet_ * rôles.
Quelle est la configuration de votre web.config? – abatishchev
@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! –
Content d'entendre :) À votre santé! – abatishchev