【问题标题】:Changing some of COM "things" from external place从外部更改一些 COM“事物”
【发布时间】:2009-12-01 18:27:19
【问题描述】:

这是一个很难的问题。 我们有一个 ASP.NET 应用程序、IIS7 服务器(运行经典管​​道,如果相关)和一个胖丑的 COM 对象库。
应用程序以这种方式使用这个库:调用函数、获取结果、显示它。
问题是:COM 库没有改变语言偏好的功能 - 它从“web.config”文件初始化它,然后没有明显的方法来改变它。
问题是:如何做到这一点不平凡。我可以用 ASP.NET 应用程序和服务器本身的一些东西做任何事情。
基本上,我认为,我需要以某种方式为应用程序池线程调用 SetThreadCultureUI()。 另外,当然,我可以为每种语言创建几个应用程序域,并在其中加载 COM,但这将是太多的编码。

Soo.. 有什么想法可以以最快、最简单的方式完成吗? (多个应用程序池和一个应用程序的副本已经是一个使用过的解决方案,但一个糟糕的解决方案)

【问题讨论】:

    标签: c# com iis-7 internationalization


    【解决方案1】:

    您需要进行一些测试。如果 COM 应用程序真的在从 web.config 读取语言设置(坦率地说,如果这样做的话,那将是相当不寻常的),那么您无能为力。重写 web.config 真的很难,尤其是因为你在保存文件时重启了应用程序池!

    但是,如果它正在为给定线程检查操作系统的文化,您可以在代码中使用BackgroundWorker 来生成一个新线程。在那里,您可以设置区域性并调用您的 COM 对象(使用适当的 locks 以确保线程安全),而无需太多额外开销。

    另外,是的,多个应用程序池是解决问题的重量级但微不足道的答案。如果 COM 库确实读取了 web.config,我认为这是唯一的解决方案。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多