我创建了
AuthorizeSessionAttribute
来处理我的网络应用程序中的权限。问题是当我不授权访问 API 并且我这样做时:
context.Result = new StatusCodeResult((int)HttpStatusCode.MethodNotAllowed);
我也尝试过使用
Unauthorized
但是,在浏览器中我可以看到响应始终是 404。
可能是什么问题?我没有更多信息了。如果我获得许可,我会收到代码 200 作为响应。
您似乎在
AuthorizeSessionAttribute
(405 或 401)中设置了正确的状态代码,但收到了 404 响应。造成这种情况的可能原因有以下几个:
如果请求 URL 与您的
Startup.cs
或控制器操作中定义的任何路由不匹配,它将返回 404 错误。确保为 API 操作正确设置路由。如果 API 路径或 HTTP 方法配置不正确,则可能会发生这种情况。
有时,自定义错误处理中间件或 IIS(如果您托管在 IIS 中)可能会拦截 405 状态代码并将其转换为 404。您可以检查 Web 服务器(如 IIS)或
中是否有自定义错误处理Startup.cs
可能正在修改响应。
您可能在
web.config
或 IIS 设置中进行了配置,将错误状态代码映射到 404。
您可能有一个异常处理中间件,可以捕获所有异常或错误并将其替换为 404。查看您的
Startup.cs
是否有可能干扰响应的中间件,例如 UseExceptionHandler()
或 UseStatusCodePages()
。