【发布时间】:2017-11-19 16:40:13
【问题描述】:
我试图解决这个问题已经好几个小时了,但我找不到任何东西。基本上我有一个简单的控制器,大致如下所示:
[Route("v1/lists")]
public class ListController : Controller
{
...
[HttpPost("{id}/invite")]
public async Task<IActionResult> PostInvite([FromBody] string inviteSecret, [FromRoute] int id, [FromQuery] string userSecret)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
List list = await context.Lists.SingleOrDefaultAsync(l => l.ID == id);
if (list == null)
{
return NotFound();
}
User postingUser = await context.Users.SingleOrDefaultAsync(u => u.ID == list.CreationUserID);
if (postingUser == null || postingUser.Secret != userSecret)
{
return Forbid();
}
await context.ListInvites.AddAsync(new ListInvite{ListID = id, InviteSecret = inviteSecret});
await context.SaveChangesAsync();
return Ok();
}
....
}
问题是:每当调用此方法并通过 return Forbid(); 退出时,Kestrel 会随后抛出 InvalidOperationException 并显示消息
没有配置身份验证处理程序来处理该方案:自动
(当然服务器返回 500)。奇怪的是,我没有在任何地方进行任何身份验证,并且它不会发生,例如如果方法离开return Ok();。在这一点上我真的很迷茫,因为如果你尝试用谷歌搜索这个问题,你会得到解决方案而不是解决方案......对于那些实际上进行身份验证并且有问题的人。我真的希望这里有人知道如何解决这个问题和/或我可以做些什么来找出发生这种情况的原因。
【问题讨论】:
标签: c# asp.net asp.net-web-api web asp.net-core