【问题标题】:Call .Net assembly from Biztalk Orchestration: Where to put config?从 Biztalk Orchestration 调用 .Net 程序集:将配置放在哪里?
【发布时间】:2023-03-21 12:36:02
【问题描述】:

我有一个外部 .net 程序集,包括我需要从 Biztalk 编排调用的 app.config。

我已经将一些日志记录到 .net 程序集中,并且可以看到它没有读取或找不到 app.config 文件,因为 ConfigurationManager.AppSettings.Count 为 0

我使用 gacutil /i path.to.dll 将 .net 程序集安装到 GAC,但我不确定 app.config 会发生什么。

当我从 Biztalk 编排中调用 app.config 时,我有什么想法可以确保它被读取?

谢谢。

【问题讨论】:

    标签: app-config biztalk orchestration


    【解决方案1】:

    BizTalk 使用它自己的名为 btsntsvc.exe.config 的配置文件,该文件位于 BizTalk 程序文件目录中。您可以将配置部分添加到此文件中,然后反弹 biztalk 主机实例以获取更改。

    但是,这不是好的做法。当您只有一个 biztalk 应用程序服务器时可以这样做,但如果您需要突然向外扩展,您需要维护多个配置文件。

    推荐的方法是使用 SSO 来存储特定于应用程序的配置数据,因为它是 BizTalk 的配置存储解决方案,因此始终可用。我总是使用这种方法并且从来没有遇到过任何问题(尽管有一些与开发和管理相关的开销)。

    Richard Seroter 的博客中的here 提供了有关如何处理此问题的详细信息。

    我其实用的是修改版here

    我还使用 MSBuild 任务 here 来自动部署新配置。

    编辑:发布的代码用于包装 SSOCLient 并调用配置值here

    【讨论】:

      【解决方案2】:

      您也可以使用自定义解决方案。在您的外部项目中创建一个函数,它将配置文件作为 XML 文档加载,您可以从配置文件中获取值。

      XmlDocument doc = new XmlDocument();
      doc.Load(Config Path);
      string value = doc.SelectSingleNode("/configuration/appSettings/add 
      [@key='key']/@value").Value;
      

      【讨论】:

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