gpt4 book ai didi

c# - .Net 核心全局过滤器

转载 作者:行者123 更新时间:2023-11-30 22:55:12 26 4
gpt4 key购买 nike

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

过滤器:

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" });
}
}

STARTUP.CS

public void ConfigureServices(IServiceCollection services)
{
var logger = _loggerFactory.CreateLogger<Startup>();
services.AddCors();

services.AddMvc(options =>
{
options.Filters.Add(new TestFilter());
});
}

Controller 方法:

[HttpGet("", Name = "search")]
[ProducesResponseType(typeof(PagedResult<SearchViewModel>), (int)HttpStatusCode.OK)]
public async Task<IActionResult> Get()

最佳答案

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

services.AddCors(options =>
{
options.AddPolicy("ResultHeader", policy =>
{
policy
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.WithExposedHeaders("OnResultExecuting"); //headers to be exposed
});
});

而且你在全局范围内使用它

app.UseCors("Default");

或仅针对特定操作/ Controller

[HttpGet("", Name = "search")]
[ProducesResponseType(typeof(PagedResult<SearchViewModel>), (int)HttpStatusCode.OK)]
[EnableCors("ResultHeader")] //enabling cors requests
public async Task<IActionResult> Get()

关于c# - .Net 核心全局过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55477924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com