Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在到达委派处理程序之前跟踪或记录对自托管ASP.NET WebApi的请求?_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

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

C# 如何在到达委派处理程序之前跟踪或记录对自托管ASP.NET WebApi的请求?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,我有一个自托管WebApi 1和一个Costam跟踪器 当存在有效的请求和响应时,所有内容都被正确记录和跟踪;但是,当存在大小大于默认maxRequestLength的POST请求时,服务器将向客户端返回400(错误请求),管道中的执行将终止。因此,跟踪器将永远不会捕获错误 查看ASP.NET WebApi消息生命周期图,我假设400响应是在跟踪程序在管道中开始其作业之前生成并返回的 考虑到可以在Global.asax(on_error method)上轻松捕获此类错误,在自托管WebApi中捕

我有一个自托管WebApi 1和一个Costam跟踪器

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

查看ASP.NET WebApi消息生命周期图,我假设400响应是在跟踪程序在管道中开始其作业之前生成并返回的

考虑到可以在Global.asax(on_error method)上轻松捕获此类错误,在自托管WebApi中捕获错误的解决方案是什么


提前感谢。

我假设您使用的是Web API 1自助主机。在封面下,这是一个WCF服务主机。MaxRequestLength是一个WCF的东西

因此,如果您想捕获它,您需要下拉到WCF自定义和配置。如果您创建一个从HttpSelfHostConfiguration派生的配置类,那么会有一个重载,允许您配置绑定,使用大量的WCF魔法,您可能可以捕获错误

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


我的第一个建议是研究WebAPI 2 Owin HttpListener主机。这不是基于WCF的,您可能会发现捕获此类问题更容易。老实说,我真的不知道Owin HTTPListener主机是否有一个与MaxRequestLength等效的内置函数,实际上您可能需要自己将其构建为MessageHandler。

完美!我完全忘了奥文。我想我现在可以修好了。tnx