我最近开始学习WebApi C#,我有一个关于Basic Auth的问题。 我遵循了tutorial。
我遇到的问题是对这段代码的警告。
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;
}
}
我收到以下警告:
Advertencia 1 Aestemétodoasincrónicolefaltan operadores'await'yseejecutará deformasincrónica。考虑到欧洲的运营商'await'para esperar llamadas API que no sean de bloqueo o'await Task.Run(...)' para realizar tareas enlazadas a la CPU en un subproceso en segundo 平。 C:\ Users \ Desarrollo2 \ Source \ Repos \ digitalapi \ Digital.WebApi \ Filters \ Auth \ IdentityBasicAuthenticationAttribute.cs 14 51 Digital.WebApi
如何解决此问题或取消警告?
我想问别的问题,这不是问题,但这是一个无聊的错误......
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);
}
}
错误2 El nombre'GlobalConfiguration'没有exent en el contexto 实际C:\ Users \ Desarrollo2 \ Source \ Repos \ digitalapi \ Digital.WebApi.Tests \ App_Start \ UnityConfig.cs 18 13 Digital.WebApi.Tests
它是固定的清洁溶液并重新编译。但如果有可能我想知道为什么有时app会给我这个问题。
对不起,如果错误是西班牙语,我希望找出这些问题不是问题。
提前致谢;
抱歉我的英语不好......
答案 0 :(得分:1)
警告是因为您的方法定义有async
,但在方法调用中没有使用await
。
从方法定义中删除async
并返回任务以删除该警告。
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);
}
当项目找不到GlobalConfiguration
所需的dll时,可能会发生该错误。
添加对程序集的引用:System.Web.Http.WebHost dll
或确保它被引用。
如果您使用的是NuGet
个软件包,则应检查以确保使用正确的软件包。寻找Microsoft ASP.NET Web API 2.*
以下是一些教程