3 回答

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)目。

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

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.
}
- 3 回答
- 0 關(guān)注
- 159 瀏覽
添加回答
舉報(bào)