作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ASP.NET 服务,它已经有 config.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler());
在那里它跟踪特定的错误,所以没什么特别的。
我想更具体地说明如何跟踪无效 URL 的情况。
例如,如果我的服务有一个 Controller /方法对应于各种 /api/controller/../method/..
请求 URL 中的路径,我想用特殊标志跟踪与任何 Controller /方法都不匹配的请求,以便轻松过滤它们 - 我不想看到所有随机 /bot/probing.php
和 hack/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/
我是一名优秀的程序员,十分优秀!