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

时间:2011-02-24 12:45:32

标签: c# ihttphandler httpexception

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

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

3 个答案:

答案 0 :(得分:5)

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

const int ErrConnReset = unchecked((int)0x80072746);

const int ErrConnReset = -2147014842;

答案 1 :(得分:5)

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

        try {
            //...
        }
        catch (HttpException ex) {
            if ((uint)ex.ErrorCode != 0x80072746) throw;
        }

答案 2 :(得分:2)

在计算机科学中,负整数用十六进制表示,第一位设置为1(来源:wikipediat)。

根据这个,十六进制数0x80072746可以用基数2写成:

  

1000 0000 0000 0111 0010 0111 0100 0110

设置第一位......然后它实际上对应于这个数字:

  

-0111 1111 1111 1000 1101 1000 1011 1010

最终可以像这样在基数10中表示:

  

-2147014842

最后,实际上是一个正确的整数。

不知道它是否可以帮助您解决问题。