Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我能';当我的筛选器方法为异步时,不要将对象从筛选器传递到控制器。为什么?_C#_Asp.net Core_.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 我能';当我的筛选器方法为异步时,不要将对象从筛选器传递到控制器。为什么?

C# 我能';当我的筛选器方法为异步时,不要将对象从筛选器传递到控制器。为什么?,c#,asp.net-core,.net-core,asp.net-core-mvc,C#,Asp.net Core,.net Core,Asp.net Core Mvc,我有以下型号: 客户: public class Customer { public int CustomerId { get; set; } ... some props } 以及以下存储库模式方法: public async Task<T> GetAsync(Expression<Func<T, bool>> where, string includeProperties = "") { IQueryable<T> qu

我有以下型号:

客户:

public class Customer
{
    public int CustomerId { get; set; }
   ... some props
}
以及以下存储库模式方法:

public async Task<T> GetAsync(Expression<Func<T, bool>> where, string includeProperties = "")
{
    IQueryable<T> query = _dbset; 

    foreach (var includeProperty in includeProperties.Split
        (new char[] {','}, StringSplitOptions.RemoveEmptyEntries))
    {
        query = query.Include(includeProperty);
    }

    return  await query.FirstOrDefaultAsync(where);
}
但运行后,我有以下异常:

“IncludeCustomerToHttpContext”不是属性


我忘了什么

您可能想看看下面的问题
async void
。由于您没有返回
任务
,ASP.NET核心MVC管道不会等待异步调用完成。覆盖
OnActionExecutionAsync
,如@Nkosi链接的答案所示。谢谢您的评论,您能检查问题的更新吗?完成)只是忘记继承
属性(谢谢您的评论)
public class IncludeCustomerToHttpContext : ActionFilterAttribute
{
    public override async void OnActionExecuting(ActionExecutingContext context)
    {
        var customerRepository = context.HttpContext.RequestServices.GetService<ICustomerRepository>();

        var authHeader = context.HttpContext.Request?.Headers["Authorization"].ToString();

        if (!Int32.TryParse(authHeader, out int clientId))
        {
            context.Result = new UnauthorizedResult();
        }

        var customer = await customerRepository.GetAsync(x => x.CustomerId == clientId, typeof(Application).Name);

        if (customer == null)
        {
            context.Result = new UnauthorizedResult();
        }

        context.ActionArguments["Customer"] = customer;
    }
}
public async Task<IActionResult> Update([FromBody] CustomerChangeViewModel viewModel, Customer customer)
{
    ...
}
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
    var customerRepository = context.HttpContext.RequestServices.GetService<ICustomerRepository>();

    var authHeader = context.HttpContext.Request?.Headers["Authorization"].ToString();

    if (!Int32.TryParse(authHeader, out int clientId))
    {
        context.Result = new UnauthorizedResult();
    }

    var customer = await customerRepository.GetAsync(x => x.CustomerId == clientId, typeof(Application).Name);

    if (customer == null)
    {
        context.Result = new UnauthorizedResult();
    }

    context.ActionArguments["Customer"] = customer;

    await next(); 
}