3 回答
TA贡献1797条经验 获得超4个赞
这种情况的最佳解决方案是更好地分离您的关注点。使您的 api 成为与您的 MVC 应用程序分开的 csproj。它还将为您提供以后部署的灵活性。如果这是现有代码而不是新代码,我会游说将其重构为单独的 api 项目。
TA贡献1818条经验 获得超11个赞
您无法直接将内部服务器错误与 MVC 或 Web api 区分开来Error.Message。对于MVCand Web api,它们都继承自Controlleror ControllerBase。
一般来说,我们通过添加api到 web api 的路由路径来区分它们。我建议您通过不带 api 路由的 mvc 和带 api 路由的 web api 来设计您的项目。然后检查路径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贡献1784条经验 获得超8个赞
HttpRequest 中的 ContentType 和 Accept Header 区分输出类型,这在您的情况下就足够了。
您可以使用 Accept Header 进行检查。
if (context.Request.Headers["Accept"] == "application/json" || context.Request.Headers["Accept"] == "application/xml")
{
//Api Request
}
else
{
//other request.
}
- 3 回答
- 0 关注
- 133 浏览
添加回答
举报