第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Web api 和 Mvc Razor 中的 Dotnet Core 錯(cuò)誤處理

Web api 和 Mvc Razor 中的 Dotnet Core 錯(cuò)誤處理

C#
大話(huà)西游666 2022-06-18 17:27:15
在我的 Web 應(yīng)用程序中,我有 Web API 和普通的 MVC,我為 httpResponse 創(chuàng)建了一個(gè)擴(kuò)展 public static void ShowApplicationError(this HttpResponse response, string exceptionMessage,string innerException)    {        var result = JsonConvert.SerializeObject(new { error = exceptionMessage ,detail=innerException });        response.HttpContext.Response.WriteAsync(result);    }并在 startup.cs 中用于異常處理。app.UseExceptionHandler(builder =>            {                builder.Run(async context =>                {                    context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;                    var error = context.Features.Get<IExceptionHandlerFeature>();                    if (error != null)                    {                        context.Response.ShowApplicationError(error.Error.Message, error.Error.InnerException.Message);                    }                });            });像這樣。它對(duì)兩者都很好。我想?yún)^(qū)分每個(gè)請(qǐng)求的錯(cuò)誤。我不想顯示 mvc 的 json 錯(cuò)誤結(jié)束我該怎么做。
查看完整描述

3 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊

這種情況的最佳解決方案是更好地分離您的關(guān)注點(diǎn)。使您的 api 成為與您的 MVC 應(yīng)用程序分開(kāi)的 csproj。它還將為您提供以后部署的靈活性。如果這是現(xiàn)有代碼而不是新代碼,我會(huì)游說(shuō)將其重構(gòu)為單獨(dú)的 api 項(xiàng)目。



查看完整回答
反對(duì) 回復(fù) 2022-06-18
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

您無(wú)法直接將內(nèi)部服務(wù)器錯(cuò)誤與 MVC 或 Web api 區(qū)分開(kāi)來(lái)Error.Message。對(duì)于MVCand Web api,它們都繼承自Controlleror ControllerBase。


一般來(lái)說(shuō),我們通過(guò)添加api到 web api 的路由路徑來(lái)區(qū)分它們。我建議您通過(guò)不帶 api 路由的 mvc 和帶 api 路由的 web api 來(lái)設(shè)計(jì)您的項(xiàng)目。然后檢查路徑ExceptionHandlerFeature.Path。


app.UseExceptionHandler(builder =>

{

    builder.Run(async context =>

    {

        context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

        var error = context.Features.Get<IExceptionHandlerFeature>();

        var error1 = context.Features.Get<IExceptionHandlerFeature>() as ExceptionHandlerFeature;

        var error2 = context.Features.Get<IExceptionHandlerPathFeature>();

        var requestPath = error2.Path;

        if (error != null)

        {

            context.Response.ShowApplicationError(error.Error.Message, error.Error.InnerException.Message);

        }

    });

});


查看完整回答
反對(duì) 回復(fù) 2022-06-18
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

HttpRequest 中的 ContentType 和 Accept Header 區(qū)分輸出類(lèi)型,這在您的情況下就足夠了。


您可以使用 Accept Header 進(jìn)行檢查。


if (context.Request.Headers["Accept"] == "application/json" || context.Request.Headers["Accept"] == "application/xml")

{

    //Api Request

}

else

{

    //other request.

}


查看完整回答
反對(duì) 回復(fù) 2022-06-18
  • 3 回答
  • 0 關(guān)注
  • 159 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)