Запросы, которые не могут быть обработаны промежуточным программным обеспечением WebAPI OWIN, передаются следующему промежуточному программному обеспечению в конвейере OWIN. Это означает, что после промежуточного ПО WebAPI можно добавить пользовательское промежуточное ПО для обработки запросов, которые не соответствуют ни одной паре контроллер / действие.
Кроме того, если все ваши конечные точки API REST имеют базовый путь /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();
});
});
}
}