2 回答

TA貢獻1829條經驗 獲得超9個贊
生成響應的代碼ProblemDetails
不知道狀態代碼,因此在構建響應對象時410
沒有關聯的Link
和屬性。Title
要添加此感知,請ApiBehaviorOptions
在 中進行配置ConfigureServices
,如下所示:
services.Configure<ApiBehaviorOptions>(options =>
{
? ? options.ClientErrorMapping[410] = new ClientErrorData
? ? {
? ? ? ? Title = "Gone",
? ? ? ? Link = "https://tools.ietf.org/html/rfc7231#section-6.5.9"
? ? };
});
ClientErrorMapping
int
是(狀態代碼) 到的字典ClientErrorData
。請注意,我在上面使用的值Link
確實指向 RFC 的正確部分。

TA貢獻1946條經驗 獲得超3個贊
簡單地說,您必須實際返回ProblemDetails
響應正文。我必須仔細研究代碼才能確定,但我認為 ASP.NET Core 通過中間件執行此操作只是為了獲得特定的結果。他們說4xx 范圍內的任何內容,但我認為這實際上僅限于返回該范圍內的狀態代碼的內置結果類型,而不是任何具有 4xx 狀態代碼的結果。再說一遍,這是猜測,因為我還沒有確切地了解他們在做什么,盡管它沒有作為實際結果類的一部分發生。
出于您的目的,您可以采用幾種不同的方法來處理此問題。您可以編寫自己的中間件來捕獲出站響應并重寫它們。您可以使用自定義異常處理程序。您可以簡單地繼承ObjectResult
,然后ProblemDetails
自己創建一個實例并將其放入基礎中。您甚至可以ProblemDetails
直接從操作中返回(盡管這顯然是最不理想的方式)。
- 2 回答
- 0 關注
- 216 瀏覽
添加回答
舉報