我刚创建了一个ASP.NET Core应用程序,我正在尝试使用下面的控制器方法测试创建项目的Web API调用。但我按照此页面上的说明(https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api)使用Postman测试方法。
[HttpPost]
[Route("api/asset")]
public IActionResult Create([FromBody] Asset asset)
{
if (!ModelState.IsValid)
{
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return null;
}
AssetItems.Add(asset);
return CreatedAtRoute("GetAsset", new { id = asset.Id }, asset);
}
但是当我使用Postman发出请求时,我收到错误:
HTTP错误401.2 - 未经授权您无权查看此内容 页面由于身份验证标头无效。
答案 0 :(得分:2)
检查是否已向请求管道添加了身份验证/授权过滤器。可以根据您在创建项目时使用的项目模板添加。
如果控制器具有[Authorize]
属性,则删除它应允许请求通过。
但是,如果全局添加了“授权”过滤器,则可能需要在操作或控制器上添加[AllowAnonymous]
属性,以允许请求通过该操作或控制器。
[HttpPost]
[AllowAnonymous]
[Route("api/asset")]
public IActionResult Create([FromBody] Asset asset) { ... }
答案 1 :(得分:0)
检查您的launchsettings.json
(如果您是通过Visual Studio调试器运行API)或web.config
(如果您是从IIS运行API)。
就我而言,我有:
"windowsAuthentication": true,
"anonymousAuthentication": false,
将"anonymousAuthentication"
更新为true
为我解决了这个问题。
我没有确定为什么可以解决此问题的明确原因,但是我相信您的浏览器必须承认您已经在计算机上进行了身份验证并将其传递给API。但是,邮递员不知道您在本地计算机上已通过身份验证。希望有人能够确认是否是这种情况。