J'essaie donc d'obtenir un système simple de travail où j'ai une application web asp.net mvc avec les formes d'authentification déjà en cours d'exécution et avec un utilisateur créé. Je peux me connecter sans problème en utilisant le contrôleur/affichage mvc.ASP.NET MVC + Silverlight + authentification par formulaire
J'ai ensuite ajouté une application silverlight à la solution, en utilisant l'application Web existante comme hôte. J'ai créé un service Web activé silverlight et ajouté un contrat de coopération avec le code suivant:
[OperationContract]
public bool Authenticate(string username, string password)
{
if (FormsAuthentication.Authenticate(username, password))
{
FormsAuthentication.SetAuthCookie(username, false);
return true;
}
return false;
}
Dans l'application silverlight, j'ai ajouté deux zones de texte et un bouton, et une référence de service au service WCF. En cas de clic de bouton, j'ai ce code:
void login_Click(object sender, RoutedEventArgs e)
{
AuthenticationService.AuthenticationClient client = new AuthenticationClient();
client.AuthenticateCompleted += new EventHandler<AuthenticateCompletedEventArgs>(client_AuthenticateCompleted);
client.AuthenticateAsync(username.Text, password.Text);
}
void client_AuthenticateCompleted(object sender, AuthenticateCompletedEventArgs e)
{
if (e.Result)
{
MessageBox.Show("Success");
}
else
{
MessageBox.Show("Error");
}
}
Le problème est, quand j'entrer mes informations de connexion et cliquez sur le bouton, tout ce que je reçois est la zone d'erreur. Je n'arrive pas à l'obtenir pour authentifier l'utilisateur.
Que manque-t-il?
MISE À JOUR: Voici l'erreur que je reçois dans le gestionnaire complet async:
Ligne: 86 Erreur: Erreur dans Unhandled application Silverlight code: 4004
Catégorie: ManagedRuntimeError
Message: System.NullReferenceException : La référence d'objet n'est pas définie à une instance d'un objet. à UserPortal.MainPage.client_AuthenticateCompleted (sender d'objets, AuthenticateCompletedEventArgs e) à UserPortal.AuthenticationService.AuthenticationClient.OnAuthenticateCompleted (Object state)
MISE À JOUR 2: donc l'erreur i est posté ci-dessus parce que la propriété e.Error est nul. Donc, je ne reçois aucune erreur spécifique du service d'authentification. Y at-il quelque chose que je dois changer dans le web.config pour que cela fonctionne via Silverlight?
<authentication mode="Forms">
<!-- forms loginUrl="~/Account/LogOn" timeout="2880"/ -->
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/"/>
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>
Pouvez-vous s'il vous plaît essayer MessageBox.Show (e.ToString()) ou MessageBox.Show (e.Error.ToString()) ou d'essayer d'imprimer toute erreur et vous obtiendrez exactement ce que l'erreur est. –