3 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
您可以創(chuàng)建在檢查內(nèi)容類型的模型綁定之前執(zhí)行的 ResourceFilter:
public class AddMissingContentType : Attribute, IResourceFilter
{
public void OnResourceExecuting(ResourceExecutingContext context)
{
context.HttpContext.Request.Headers["Content-Type"] = "application/json";
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
}
}
并將其添加到您的方法中:
[AddMissingContentType]
[HttpDelete]
public async Task<IActionResult> Delete([FromBody]RequestData request)
{
}

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
如果您將 ~app 用作代理、負(fù)載平衡器或其他您無法控制的東西背后的 API,也許可以將其轉(zhuǎn)換為 POST...
示例:一些負(fù)載均衡器可以將主體的 DELETE 方法視為格式錯(cuò)誤。但是,如果您對自己未來的環(huán)境有把握,為什么不...
編輯:答案是:即使有可能,也許最好遵循有時(shí)適用的規(guī)則,有時(shí)不要再有任何意外。(--無法評論我是新出生的用戶)。

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
一種解決方案是在控制器方法中手動(dòng)獲取主體。您可以檢查內(nèi)容類型是否存在,或者僅使用默認(rèn)讀取器(例如 json),然后以這種方式將其轉(zhuǎn)換為您的模型。那么你不需要修改任何請求頭
[HttpDelete]
public async Task Delete()
{
using (StreamReader reader = new StreamReader(request.Body, encoding))
{
var bodyContent = await reader.ReadToEndAsync();
if(!String.IsNullOrEmpty(bodyContent))
{
//mapp the bodyContent to your model
}
}
//perform the logic which should allways be done
}
注意:重要的是在方法簽名中省略 FromBody 參數(shù),否則當(dāng)內(nèi)容類型或正文丟失時(shí)綁定將失敗
- 3 回答
- 0 關(guān)注
- 460 瀏覽
添加回答
舉報(bào)