我有一个自主WebApi 1和costum tracer。
当有有效的请求和响应时,所有内容都会被记录并正确跟踪;但是当存在大小大于默认maxRequestLength的POST请求时,服务器向客户端返回400(错误请求)并且管道中的执行终止。因此,跟踪器将永远不会捕获错误。
查看ASP.NET WebApi消息LifeCycle图HERE我假设在跟踪器在管道中开始其作业之前生成并返回400响应。
考虑到可以在Global.asax(On_Error方法)上轻松捕获此错误,在自主WebApi中捕获错误的解决方案是什么?
提前致谢。
答案 0 :(得分:1)
我假设您正在使用Web API 1自托管主机。在幕后,这是一个WCF服务主机。 MaxRequestLength是一个WCF的东西。
因此,如果要捕获它,则需要下拉到WCF自定义和配置。如果您创建一个派生自HttpSelfHostConfiguration的配置类,则存在一个允许您配置绑定的重载,并且您可以捕获大量的WCF魔法。
我的猜测是它不会很漂亮。
我的第一个建议是查看WebAPI 2 Owin HttpListener主机。这不是基于WCF的,您可能会发现更容易捕获这些问题。说实话,我真的不知道Owin HTTPListener主机是否具有与MaxRequestLength等效的内置,你实际上可能必须自己构建它作为MessageHandler。