为了账号安全,请及时绑定邮箱和手机立即绑定

.Net 核心全局过滤器

.Net 核心全局过滤器

C#
繁华开满天机 2022-11-22 09:13:00

这是我第一次使用 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()


查看完整描述

1 回答

?
慕标5832272

TA贡献1681条经验 获得超4个赞

为了让 javascript 在发出跨源请求时读取响应标头,您需要在应用程序中构建CORS策略,将某些标头公开给客户端ASP.NET Core


services.AddCors(options =>

{

    options.AddPolicy("ResultHeader", policy =>

    {

        policy

            .AllowAnyOrigin()

            .AllowAnyMethod()

            .AllowAnyHeader()

            .WithExposedHeaders("OnResultExecuting"); //headers to be exposed

    });

});

你在全球范围内使用它


app.UseCors("Default");

或仅针对特定操作/控制器


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

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

[EnableCors("ResultHeader")] //enabling cors requests

public async Task<IActionResult> Get()


查看完整回答
反对 回复 2022-11-22
  • 1 回答
  • 0 关注
  • 9 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信