0

我正在使用基本身份驗證與SSL,當我調試我的網絡API一切似乎工作正常。 IsAuthorized方法被調用,目前工作正常。但是,當我將webapi發佈到服務器時,出現以下錯誤消息已發佈的自定義授權屬性的問題

發生了錯誤 。沒有連接到Sql數據庫。 System.Web.HttpException System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(字符串 fullFileName,DATADIR字符串,字符串的connectionString)

我甚至不知道爲什麼it's試圖創建一個MDF文件,因爲webapi正在使用sql server express實例。如果我刪除授權屬性,一切工作正常。

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

如果有人能幫助我,我會非常高興!

+0

你能顯示它的代碼重新實現自定義授權解決了該問題? –

+0

現在添加方法:) – GC268DM

+0

你有任何連接字符串相關的上下文來查找數據庫的電子郵件和密碼? – Thennarasan

回答