【问题标题】:Decode HResult = -2147467259解码 HResult = -2147467259
【发布时间】:2014-04-24 23:16:20
【问题描述】:

有人可以帮我解码这个 HResult 吗?这是什么意思?我知道否定代表失败。剩下的 10 位呢?

我参考了 MSDN HResult 文章 here,但我不确定如何确定我的设施和代码位是什么。

更多信息:

_message: "外部组件抛出异常。"
数据:{System.Collections.ListDictionaryInternal}

【问题讨论】:

  • 当我尝试回发一些比平时更多的数据时出现此错误。这可能是错误的根源吗?数据太多?
  • 也许吧。很难说。你能发一个small, self-contained example that reproduces the problem吗?如果是这样,请在此处发布。更好的是,使用该信息发布一个不同的问题。
  • 谢谢大家回答我的问题。我进一步挖掘发现错误是由于超过了 aspnet:MaxHttpCollectionKeys 的最大数量。增加此数字将修复错误。
  • 为了将来使用,我写了一个HRESULT decoder 解释how to decode this value(和任何其他)。

标签: hresult


【解决方案1】:

另一种方法如下。 HRESULT 的前 32 位应包含 System Error Code。使用 AND 操作将从 HRESULT 中检索错误代码:

int result = (-2147467259 & 0xFFFF)

result 是 16389,它不属于 System Error Codes 列表,因此未指定。

【讨论】:

    【解决方案2】:

    我会告诉你怎么做。在程序员模式“Dec”设置中将负数粘贴到计算器 (Windows) 中。然后转换为“十六进制”设置。你会得到号码:FFFFFFFF80004005。错误为 80004005,即:

    0x80004005
    E_FAIL
    Unspecified 
    

    很遗憾,导致您出现此错误的函数提供者没有对错误进行分类。

    有用的链接:

    1. MSDN - HRESULT Format
    2. MSDN - HRESULT Error List

    【讨论】:

    • +1。给读者的几点注意事项:(1)确保包括减号,最简单的方法是从0中减去数字并按=(2)如果您选择了DWORD,它将去除多余的FFFFFFFF为您服务。
    • 另外,对于错过 Stephen Cleary 对该问题的评论的人来说,这是一个更简单的选择:errorcodelookup.com/?type=hresult&code=80004005
    • 非常好的答案! :-)
    【解决方案3】:

    -2147467259 十进制是 80004005 十六进制(通常呈现为 0x80004005)。那是 Win32 中的"E_FAIL (Unspecified error)"

    不是一个很有帮助的错误代码,但也许它会让您更接近解决方案。

    【讨论】:

      【解决方案4】:

      将其打印为十六进制数,然后使用例如 VisualStudio ErrorLookup 来获取消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多