簡體   English   中英

如何在 .net core 2.2 web API 中傳遞帶有“禁止”響應的字符串

[英]How can pass string with the “forbidden” response in .net core 2.2 web API

它工作正常:

context.Result = new ForbidResult(); 

但我想傳遞一條帶有“禁止”響應的消息,如下所示:

context.Result = new ForbidResult("Forbidden");

在 .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");
     }
 }

我創建了這兩個類(1.CustomError 和 2.CustomUnauthorizedResult)並使用這些類來處理授權。 在這里您可以傳遞動態消息和狀態代碼。

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);
    }
}

只需使用ObjectResult即可返回帶有狀態代碼的自定義響應。

看語法,

return new ObjectResult("Message") {StatusCode = YOUR_STATUS_CODE };

例子:

public async Task<IActionResult> Post([FromBody] SomeData _data)
{
     // do your stuff

    // return forbidden with custom message
    return new ObjectResult("Forbidden") { StatusCode = 403};
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM