.Net 核心全局过滤器

这是我第一次使用 aFilter并且它不工作。这是一个非常简单的例子。没有向响应标头添加任何内容,也没有在过滤器类中命中断点。我希望这是一个全局过滤器。我错过了什么或做错了什么?


过滤器:


public class TestFilter : IResultFilter

{

    public void OnResultExecuted(ResultExecutedContext context)

    {

        throw new NotImplementedException();

    }


    public void OnResultExecuting(ResultExecutingContext context)

    {

        var headerName = "OnResultExecuting";

        context.HttpContext.Response.Headers.Add(

            headerName, new string[] { "ResultExecutingSuccessfully" });

    }

}

启动.CS


public void ConfigureServices(IServiceCollection services)

{

    var logger = _loggerFactory.CreateLogger<Startup>();

    services.AddCors();


    services.AddMvc(options =>

    {

        options.Filters.Add(new TestFilter());

    });

}

控制器方法:


[HttpGet("", Name = "search")]

[ProducesResponseType(typeof(PagedResult<SearchViewModel>), (int)HttpStatusCode.OK)]

public async Task<IActionResult> Get()


繁华开满天机
浏览 92回答 1
1回答

慕标5832272

为了让 javascript 在发出跨源请求时读取响应标头,您需要在应用程序中构建CORS策略,将某些标头公开给客户端ASP.NET Coreservices.AddCors(options =>{&nbsp; &nbsp; options.AddPolicy("ResultHeader", policy =>&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; policy&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .AllowAnyOrigin()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .AllowAnyMethod()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .AllowAnyHeader()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .WithExposedHeaders("OnResultExecuting"); //headers to be exposed&nbsp; &nbsp; });});你在全球范围内使用它app.UseCors("Default");或仅针对特定操作/控制器[HttpGet("", Name = "search")][ProducesResponseType(typeof(PagedResult<SearchViewModel>), (int)HttpStatusCode.OK)][EnableCors("ResultHeader")] //enabling cors requestspublic async Task<IActionResult> Get()
打开App,查看更多内容
随时随地看视频慕课网APP