gpt4 book ai didi

asp.net - 如何捕获由于 ASP.NET 中无法识别的 URL 路径而导致的错误?

转载 作者:行者123 更新时间:2023-12-01 01:41:42 25 4
gpt4 key购买 nike

我有一个 ASP.NET 服务,它已经有 config.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler());在那里它跟踪特定的错误,所以没什么特别的。

我想更具体地说明如何跟踪无效 URL 的情况。
例如,如果我的服务有一个 Controller /方法对应于各种 /api/controller/../method/..请求 URL 中的路径,我想用特殊标志跟踪与任何 Controller /方法都不匹配的请求,以便轻松过滤它们 - 我不想看到所有随机 /bot/probing.phphack/seeking.jsp (1) 污染我的正常日志 (2) 迷路而没有及时发现。

理想情况下,如果可能的话,我还想切断连接而不用 HTTP 500 响应调用者

最佳答案

WebAPI OWIN 中间件无法处理的请求将传递到 OWIN 管道中的下一个中间件。这意味着您可以在 WebAPI 中间件之后添加自定义中间件来处理不匹配任何 Controller /操作对的请求。

此外,如果您所有的 REST API 端点的基本路径都是 /api您可以将 WebAPI 和您的自定义中间件映射到此基本路径,以从处理中排除对随机 URL(如 /bot/probing.php)的请求。

配置上述管道的 OWIN 启动类可以是以下内容:

public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map(
"/api",
apiApp =>
{
var config = new HttpConfiguration();
WebApiConfig.Register(config);

app
.UseWebApi(config)
.Use(async (ctx, next) =>
{
Trace.TraceError(
"WebApi routing error: {0}{1}",
ctx.Request.PathBase,
ctx.Request.Path);
await next();
});
});
}
}

关于asp.net - 如何捕获由于 ASP.NET 中无法识别的 URL 路径而导致的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911609/

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