2016-03-21 26 views
1

WebApi C# 'yı yeni öğrendim ve Basic Auth hakkında bir sorum var. Bunu izledim tutorial.WebApi Temel Kimlik Doğrulama ve GlobalConfiguration bağlamda bulunamadı

Sahip olduğum sorun, kodun bu bölümünde bir uyarıdır.

public class IdentityBasicAuthenticationAttribute : BasicAuthenticationAttribute 
{ 
    protected override async Task<IPrincipal> AuthenticateAsync(string userName, string password, CancellationToken cancellationToken) 
    { 
     cancellationToken.ThrowIfCancellationRequested(); 

     if (userName != "testuser" || password != "Pass1word") 
     { 
      // No user with userName/password exists. 
      return null; 
     } 

     Claim nameClaim = new Claim(ClaimTypes.Name, userName); 
     List<Claim> claims = new List<Claim> { nameClaim }; 

     ClaimsIdentity identity = new ClaimsIdentity(claims, AuthenticationTypes.Basic); 

     var principal = new ClaimsPrincipal(identity); 
     return principal; 
    } 
} 

aşağıdaki uyarıyı alıyorum:

advertencia 1 A este Metodo asincrónico le faltan Operadores 'bekliyor' y se ejecutará de forma sincrónica. Considere el uso del operador 'bekliyor' para esperar llamadas API que no sean de bloqueo o 'beklemek Görev. (0)' para en iyi duruma getirmek için en iyi duruma getirme subproceso en segundo plano. C: Desarrollo2 \ Source \ Repos \ \ Users \ digitalapi \ Digital.WebApi Filtreler \ \ Auth \ IdentityBasicAuthenticationAttribute.cs 14 51 Digital.WebApi

Nasıl bu çözmek ya da bu uyarıyı bastırmak ki?

Bir şey daha sormak istiyorum,

public static class UnityConfig 
{ 
    public static void RegisterComponents() 
    { 
     var container = new UnityContainer(); 

     // register all your components with the container here 
     // it is NOT necessary to register your controllers 

     // e.g. container.RegisterType<ITestService, TestService>(); 

     GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container); 
    } 
} 

Hata 2 el contexto tr hiçbir existe El Nombre 'GlobalConfiguration' gerçek C ... bir sorun değil ama sıkıcı bir hatadır : \ Kullanıcılar \ digitalapi \ Digital.WebApi.Tests \ App_Start UnityConfig.cs 18 \ 13 Digital.WebApi.Tests

Sabitlenen temizleme çözeltisi ve yeniden derlemek olan Desarrollo2 \ Kaynak \ Reposl \. Ama eğer mümkünse bazen uygulamanın bana bu sorunu nasıl verdiğini bilmek istiyorum.

Hatalar İspanyolca ise üzgünüz, umarım bu sorunları çözmek için bir sorun değildir.

Şimdiden teşekkürler; Eğer yöntem tanımına async çünkü

benim kötü İngilizce Maalesef

...

cevap

1

uyarıdır, ama hiçbir yerde yöntem çağırma size await kullanıyorsunuz.

async yöntem tanımını yöntem tanımından kaldırın ve bu uyarıyı kaldırmak için bir Görev döndürün. Proje GlobalConfiguration için gerekli dll bulamadığında

protected override Task<IPrincipal> AuthenticateAsync(string userName, string password, CancellationToken cancellationToken) 
{ 
    cancellationToken.ThrowIfCancellationRequested(); 

    if (userName != "testuser" || password != "Pass1word") 
    { 
     // No user with userName/password exists. 
     return null; 
    } 

    Claim nameClaim = new Claim(ClaimTypes.Name, userName); 
    var claims = new List<Claim> { nameClaim }; 

    ClaimsIdentity identity = new ClaimsIdentity(claims, AuthenticationTypes.Basic); 

    var principal = new ClaimsPrincipal(identity); 
    return Task.FromResult((IPrincipal)principal); 
} 

O hata oluşabilir. System.Web.Http.WebHost dll

veya başvuruluyor emin olun:

montaj referansı ekleyin.

NuGet paketlerini kullanıyorsanız, doğru paketleri kullandığınızdan emin olmak için işaretlemelisiniz.İşte Microsoft ASP.NET Web API 2.*

arayın bazı öğreticiler

Basic Authentication in ASP.NET Web API

A WebAPI Basic Authentication Authorization Filter

vardır
İlgili konular