You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Web API、WCF中无法加载Sage.Peachtree.Domain程序集求助

解决ASP.NET Web API调用Sage 50 SDK程序集加载异常的方案

以下是针对你遇到的Sage.Peachtree.Domain程序集找不到异常的具体解决步骤:

  • 确保所有依赖程序集部署到Web API目录
    WinForms/控制台项目会自动将引用的依赖dll复制到输出目录,但Web项目可能不会。检查Web API的bin目录是否包含Sage.Peachtree.Domain.dll以及其他Sage SDK相关依赖(如Sage.Peachtree.API.dll、Sage.Peachtree.Session.dll等)。如果缺失,手动从Sage SDK安装路径复制到bin目录,或在项目引用中设置这些dll的复制本地属性为True。

  • 启用应用程序池的32位支持
    即使项目设置为x86架构,IIS应用程序池默认可能运行在64位模式下,导致无法加载x86的Sage程序集。操作步骤:

    1. 打开IIS管理器,找到Web API对应的应用程序池
    2. 右键选择高级设置
    3. 将启用32位应用程序设置为True
  • 调整应用程序池的权限与配置
    Sage 50 SDK的部分功能需要桌面交互权限,而Web API的应用程序池默认无此权限:

    • 将应用程序池的身份改为LocalSystem(或具有本地管理员权限的账户)
    • 在应用程序池高级设置中,将加载用户配置文件设置为True
  • 添加程序集绑定重定向
    如果Web项目中存在版本冲突,在Web.config的<runtime>节点下添加绑定重定向配置,确保指向正确的Sage程序集版本:

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Sage.Peachtree.Domain" 
                            publicKeyToken="d06c16dde04d83e4" 
                            culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-2023.0.0.222" 
                           newVersion="2023.0.0.222" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    
  • 验证GAC注册状态
    检查Sage.Peachtree.Domain.dll是否已注册到全局程序集缓存(GAC)。打开命令提示符(以管理员身份),执行:

    gacutil /l Sage.Peachtree.Domain
    

    如果未注册,可使用gacutil /i "路径\Sage.Peachtree.Domain.dll"将其注册到GAC。

  • 用Fusion Log Viewer排查加载细节
    使用.NET的Fusion Log Viewer(fuslogvw.exe)查看程序集加载失败的详细日志:

    1. 以管理员身份运行fuslogvw.exe
    2. 点击设置,选择记录所有绑定失败
    3. 运行Web API触发异常,返回查看日志,可获取程序集加载的路径、版本匹配情况等信息,定位具体问题。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 00:48:33