0

J'utilise l'authentification de base avec ssl et quand je débogue mon web api tout semble fonctionner correctement. La méthode IsAuthorized est appelée et fonctionne jusqu'à présent. Mais quand je publierai le WebAPI au serveur, je reçois le message d'erreur suivantProblèmes avec l'attribut d'autorisation personnalisé sur publié

Une erreur a eu lieu . Aucune connexion à la base de données SQL. System.Web.HttpException System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile (String fullFileName, String dataDir, String connectionString)

Je ne sais même pas pourquoi ESt essayer de créer un fichier mdf, comme le webapi utilise une instance SQL Server Express. Si je supprime l'attribut autoriser, tout fonctionne bien.

protected override bool IsAuthorized(HttpActionContext actionContext) 
    { 
     if (Thread.CurrentPrincipal.Identity.Name == null || Thread.CurrentPrincipal.Identity.Name.Length == 0) 
     { // If an identity has not already been established by other means: 
      AuthenticationHeaderValue auth = actionContext.Request.Headers.Authorization; 
      if (auth != null && string.Compare(auth.Scheme, "Basic", StringComparison.OrdinalIgnoreCase) == 0) 
      { 
       string credentials = UTF8Encoding.UTF8.GetString(Convert.FromBase64String(auth.Parameter)); 
       int separatorIndex = credentials.IndexOf(':'); 
       if (separatorIndex >= 0) 
       { 
        string email = credentials.Substring(0, separatorIndex); 
        string password = credentials.Substring(separatorIndex + 1); 

        //using Facade to get access to database and check credentials 
        if (//check if valid) 
        {    
         Thread.CurrentPrincipal = actionContext.ControllerContext.RequestContext.Principal = new GenericPrincipal(new GenericIdentity(email, "Basic"), System.Web.Security.Roles.Provider.GetRolesForUser(email)); 
        } 
       } 
      } 
      return base.IsAuthorized(actionContext); 
     } 

Je serais très heureux si quelqu'un pouvait me aider!

+0

Pourriez-vous montrer le code pour cela? –

+0

Ajout de la méthode maintenant :) – GC268DM

+0

Avez-vous une chaîne de connexion liée au contexte pour rechercher la base de données pour l'email et le mot de passe? – Thennarasan

Répondre