如何在IHttpHandler中捕获特定的HttpException(#0x80072746)

gre*_*ebe 3 c# httpexception ihttphandler

看来,例如,当我们传输文件时用户关闭窗口时,可能会抛出此HttpException(0x80072746 - 远程主机关闭连接).即使我们以较小的块发送文件并检查客户端是否仍然连接,仍然可能发生异常.我们希望能够捕获这个特定的异常,忽略它.

HttpException中提供的ErrorCode是一个Int32 - 太小而无法容纳0x80072746,那么我们在哪里可以找到这个数字?

Mor*_*gil 5

Int32实际上并不太小,无法容纳0x80072746; 仅在"正常"表示法中,此数字为负数:0x80072746 == -2147014842,您可以创建一个常量来比较错误代码:

const int ErrConnReset = unchecked((int)0x80072746);
Run Code Online (Sandbox Code Playgroud)

要么

const int ErrConnReset = -2147014842;
Run Code Online (Sandbox Code Playgroud)


Han*_*ant 5

HttpException.ErrorCode属性为您提供所需的错误代码.使它看起来类似于:

        try {
            //...
        }
        catch (HttpException ex) {
            if ((uint)ex.ErrorCode != 0x80072746) throw;
        }
Run Code Online (Sandbox Code Playgroud)