You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

签名XML文档遇数字签名异常:加载程序格式错误(0x8007000B)

关于 "An attempt was made to load a program with an incorrect format. (0x8007000B)" 错误的排查方案

这个错误我之前帮不少开发者踩过坑,大概率是32位/64位程序架构不兼容导致的——虽然你说执行到xmlDoc.Load("test.xml");前一切正常,但实际上是当代码触发加载某个依赖的非托管库(或者跨架构的.NET运行时调用)时,才暴露出架构不匹配的问题。下面是几个最常见的排查方向:

  • 项目平台目标不匹配
    右键你的项目→属性→生成→平台目标,确认这个设置和你引用的所有组件(包括第三方库、系统依赖组件)的架构一致。比如你引用了32位的原生DLL,但项目设为Any CPU且勾选了“首选32位”,或者反过来64位项目引用了32位库。
    不确定的话,先尝试把平台目标改成x86或者x64(别用Any CPU),再编译运行试试。

  • Web项目的IIS应用程序池设置问题
    如果是ASP.NET项目,去IIS的应用程序池高级设置里,调整“启用32位应用程序”选项:如果你的项目是32位就设为True,64位就设为False——很多时候Web项目的这个设置和项目架构不匹配会触发这个错误。

  • XML相关依赖组件的架构冲突
    有些XML处理场景会用到非托管库(比如自定义解析器、加密XML用到的原生组件),检查你引用的NuGet包或者本地DLL,确保它们的版本(32/64位)和当前程序架构完全对应。

  • XML文件中的外部资源引用问题
    看看你的test.xml里有没有引用DTD、XSLT或者其他外部资源?如果这些资源背后依赖了架构不匹配的组件,也会在Load的时候触发这个错误。可以暂时移除这些引用,测试是否能正常加载XML文件,来定位问题。

  • 极端情况:系统组件损坏
    极少数情况下,系统里的.NET Framework或XML相关系统组件损坏也会导致这个问题。可以尝试修复.NET Framework(如果用的是.NET Framework),或者重新安装对应的运行时。

内容的提问来源于stack exchange,提问作者Enkhbold Munkhbold

火山引擎 最新活动