日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c# webapi返回html,c#-从Web API 2端点返回自定义HTTP状态代码

發布時間:2025/3/15 C# 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# webapi返回html,c#-从Web API 2端点返回自定义HTTP状态代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

c#-從Web API 2端點返回自定義HTTP狀態代碼

我正在使用WebAPI 2中的服務,并且端點當前返回IHttpActionResult。我想返回狀態碼BadResult(message),但是由于它不在422枚舉中,所以我不知所措 發送,因為所有構造函數都需要一個HttpStatusCode參數

就目前情況而言,我將返回BadResult(message),但是返回422 +消息對我的客戶來說更具描述性和實用性。 有任何想法嗎?

5個解決方案

78 votes

根據C#規范:

枚舉類型可以采用的一組值不受其枚舉成員的限制。 特別是,枚舉的基礎類型的任何值都可以轉換為枚舉類型,并且是該枚舉類型的不同有效值

因此,您可以將狀態代碼422強制轉換為HttpStatusCode。

控制器示例:

using System.Net;

using System.Net.Http;

using System.Web.Http;

namespace CompanyName.Controllers.Api

{

[RoutePrefix("services/noop")]

[AllowAnonymous]

public class NoOpController : ApiController

{

[Route]

[HttpGet]

public IHttpActionResult GetNoop()

{

return new System.Web.Http.Results.ResponseMessageResult(

Request.CreateErrorResponse(

(HttpStatusCode)422,

new HttpError("Something goes wrong")

)

);

}

}

}

lilo.jacob answered 2020-02-29T15:05:06Z

23 votes

return Content((HttpStatusCode) 422, whatEver);

功勞是:對于非OK響應,返回帶有IHttpActionResult的內容

并且您的代碼必須為<= 999

請忽略100到200之間的代碼。

peyman answered 2020-02-29T15:05:34Z

3 votes

我用這種方式簡單而優雅。

public ActionResult Validate(User user)

{

return new HttpStatusCodeResult((HttpStatusCode)500,

"My custom internal server error.");

}

然后是角度控制器。

function errorCallBack(response) {

$scope.response = {

code: response.status,

text: response.statusText

}});

希望對您有幫助。

Ricardo G Saraiva answered 2020-02-29T15:06:03Z

0 votes

為此,您可能需要使用操作過濾器屬性。 沒有什么花哨。 只需創建一個類并從c#中的ActionFilterAttribute類繼承即可。 然后重寫名為OnActionExecuting的方法以實現此方法。 然后,只需在任何控制器的頭上使用此過濾器即可。 以下是一個演示。

在需要在ActionFilterAttribute中生成基于自定義狀態代碼的消息的情況下,可以通過以下方式編寫:

if (necessity_to_send_custom_code)

{

actionContext.Response = actionContext.Request.CreateResponse((HttpStatusCode)855, "This is custom error message for you");

}

希望這可以幫助。

Sajeeb Chandan answered 2020-02-29T15:06:32Z

0 votes

另一個簡化的示例:

public class MyController : ApiController

{

public IHttpActionResult Get()

{

HttpStatusCode codeNotDefined = (HttpStatusCode)422;

return Content(codeNotDefined, "message to be sent in response body");

}

}

Content是在抽象類ApiController(控制器的基礎)中定義的虛擬方法。 參見以下聲明:

protected internal virtual NegotiatedContentResult Content(HttpStatusCode statusCode, T value);

themefield answered 2020-02-29T15:06:59Z

總結

以上是生活随笔為你收集整理的c# webapi返回html,c#-从Web API 2端点返回自定义HTTP状态代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。