如何在到达委托处理程序之前跟踪或记录对SelfHosted ASP.NET WebApi的请求?

时间:2013-12-19 12:32:45

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

我有一个自主WebApi 1和costum tracer。

当有有效的请求和响应时,所有内容都会被记录并正确跟踪;但是当存在大小大于默认maxRequestLength的POST请求时,服务器向客户端返回400(错误请求)并且管道中的执行终止。因此,跟踪器将永远不会捕获错误。

查看ASP.NET WebApi消息LifeCycle图HERE我假设在跟踪器在管道中开始其作业之前生成并返回400响应。

考虑到可以在Global.asax(On_Error方法)上轻松捕获此错误,在自主WebApi中捕获错误的解决方案是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我假设您正在使用Web API 1自托管主机。在幕后,这是一个WCF服务主机。 MaxRequestLength是一个WCF的东西。

因此,如果要捕获它,则需要下拉到WCF自定义和配置。如果您创建一个派生自HttpSelfHostConfiguration的配置类,则存在一个允许您配置绑定的重载,并且您可以捕获大量的WCF魔法。

我的猜测是它不会很漂亮。

我的第一个建议是查看WebAPI 2 Owin HttpListener主机。这不是基于WCF的,您可能会发现更容易捕获这些问题。说实话,我真的不知道Owin HTTPListener主机是否具有与MaxRequestLength等效的内置,你实际上可能必须自己构建它作为MessageHandler。