【发布时间】:2020-12-28 15:02:14
【问题描述】:
一切正常:
context.Result = new ForbidResult();
但我想传递一个带有 “禁止” 响应的消息,如下所示:
context.Result = new ForbidResult("Forbidden");
在 .net core 2 网络 API 中。但是当我写上面这行代码时,我得到了
500 内部服务器错误
所以,任何人都可以帮助我如何执行上述代码行。
示例代码
public class ClaimRequirementFilter : Microsoft.AspNetCore.Mvc.Filters.IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
// working code
context.Result = new ForbidResult();
// Code with error (500 Internal Server Error)
context.Result = new ForbidResult("Forbidden");
}
}
【问题讨论】:
-
看起来带有字符串参数的 ForbidResult 构造函数不是用于传递消息,而是实际上挑战身份验证方案,如 here
-
是的,它是 ForbidResult 构造函数,然后我无法理解为什么它会生成 500 Internet 服务器错误作为响应? @MindSwipe
-
启动服务器,看看发生500内部(不是互联网)服务器错误时会发生什么,应该会抛出异常。这是因为您不能将任意文本作为参数传递给 ForbidResult
-
我执行您(@MindSwipe)所说的,但仍然收到 500 内部服务器错误。你能(@MindSwipe)给我一行工作代码吗?
-
我不是要你做任何事情,我是说你所做的事情是不正确的。要使用 ForbidResult 的字符串参数,您首先需要向应用程序添加身份验证方案,然后在构造函数中使用相同的名称,否则会引发错误(就像这里一样)。另外,如果可以的话,我不能给你一个有效的代码行,这将是一个答案而不是评论。
标签: c# asp.net-core-2.1