Asp.net core Nginx反向代理-405 POST

Asp.net core Nginx反向代理-405 POST,asp.net-core,nginx,docker-compose,Asp.net Core,Nginx,Docker Compose,我有一个Asp.Net核心Web Api应用程序,它使用“x-Api-key”http头来授权发送请求的人。我已将操作筛选器设置为 public void OnActionExecuting(ActionExecutingContext上下文) { //使用指定的api键检索记录 var api=dbContext.api .Include(a=>a.User) .FirstOrDefault(a=>a.Key.Equals(context.HttpContext.Request.Headers

我有一个Asp.Net核心Web Api应用程序,它使用“x-Api-key”http头来授权发送请求的人。我已将操作筛选器设置为

public void OnActionExecuting(ActionExecutingContext上下文)
{
//使用指定的api键检索记录
var api=dbContext.api
.Include(a=>a.User)
.FirstOrDefault(a=>a.Key.Equals(context.HttpContext.Request.Headers[“x-api-Key]”);
//检查记录是否存在
如果(api为空)
{
context.Result=new UnauthorizedResult();//短路并返回401
}
}
它在没有nginx代理的GET和POST请求上都能按预期工作,但是,只要我添加nginx,我就会收到405条消息,如果api键无效,则在POST请求上不允许,但在GET上收到401条消息(如果api键有效,则过滤器会按预期工作,并将执行传递给控制器)。这是我的代理配置

server {
    listen 80;

    location / {
        proxy_pass http://ctoxweb:5000;
    }
}

(nginx和web api都是使用docker设置的)。问题出在哪里?如何解决?

我设法解决了这个问题,但我不知道为什么会发生这种情况,我想这与nginx不允许对静态内容使用任何方法(GET除外)有关

我最好的猜测是,nginx假设空响应体(来自
new UnauthorizedResult()
)是静态的,尽管它显然是由后端提供的。修复它的方法就像向响应体提供一些对象一样简单

if(api为空)
{
context.HttpContext.Response.ContentType=“application/json”;
context.Result=newunauthorizedObjectResult(“{\“info\”:\“不存在api密钥头\“}”);
}