Udi*_*ati 2 c# asp.net-core-2.1
运行正常:
context.Result = new ForbidResult();
Run Code Online (Sandbox Code Playgroud)
但是我想传递一条带有“禁止”响应的消息,如下所示:
context.Result = new ForbidResult("Forbidden");
Run Code Online (Sandbox Code Playgroud)
在.net core 2 Web 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");
}
}
Run Code Online (Sandbox Code Playgroud)
sha*_*aka 12
您只需使用ObjectResult返回带有状态代码的自定义响应即可。
查看语法,
return new ObjectResult("Message") {StatusCode = YOUR_STATUS_CODE };
Run Code Online (Sandbox Code Playgroud)
例子:
public async Task<IActionResult> Post([FromBody] SomeData _data)
{
// do your stuff
// return forbidden with custom message
return new ObjectResult("Forbidden") { StatusCode = 403};
}
Run Code Online (Sandbox Code Playgroud)
我创建了这两个类(1. CustomError和2. CustomUnauthorizedResult),并使用这两个类来处理Authorization。您可以在此处传递动态消息和状态代码。
public class CustomError
{
public string Error { get; }
public CustomError(string message)
{
Error = message;
}
}
public class CustomUnauthorizedResult : JsonResult
{
public CustomUnauthorizedResult(string message, int statusCode) : base(new CustomError(message))
{
StatusCode = statusCode;
}
}
public class ClaimRequirementFilter : Microsoft.AspNetCore.Mvc.Filters.IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
context.Result = new CustomUnauthorizedResult("Authorization failed.", statusCode:403);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |