gpt4 book ai didi

c# - 在中间件中获取 Controller 的类型信息(或如何区分对 Web API 和页面的请求)

转载 作者:行者123 更新时间:2023-12-05 06:27:11 24 4
gpt4 key购买 nike

我想创建处理异常但对 api Controller 和 razor 页面/mvc 的不同请求的中间件。在中间件中,我只有一个 context.Request.Path url 并且想“找到”一个分配给处理请求的 Controller (或页面),然后分析它的类型信息并做出决定。

像这样:

MyExceptionHandlerMiddleware{
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception ex)
{
var path = context.Request.Path;
var isApiCall = ... ????
if ( isApiCall )
{
var json = GetJson(ex);
wait context.Response.WriteAsync(json); // return json
}
else {
await _options.ExceptionHandler(context); // return the page
}
}
}
}

问题是此时常规路由信息似乎不可用。如何获取 Controller 的类型信息?

如何在中间件上下文中区分对 Web API 和页面的调用?

最佳答案

不确定为什么要这样做。您可以使用内置的 UseExceptionHandler() Asp.Net Core 中的中间件并使用它的 Path 属性来获取路由信息可能像

var path = HttpContext.Features.Get<IExceptionHandlerPathFeature>()?.Path;

关于c# - 在中间件中获取 Controller 的类型信息(或如何区分对 Web API 和页面的请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55469526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com