2009-12-01 57 views
0

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

Soo ..任何想法都可以做到最快,最简单的方法吗? (多个应用程序池与一个应用程序的副本已经是一个使用的解决方案,但不好)

回答

0

您需要做一些测试。如果COM应用程序真的从web.config中读取语言设置(坦率地说,如果它确实是非常不寻常的话),那么你可以做的事情就不多了。重写web.config非常困难,尤其是因为您在保存文件时重新启动应用程序池!

但是,如果它检查给定线程文化的操作系统,则可以在代码中使用BackgroundWorker来产生新线程。在那里,你可以设置文化,并调用你的COM对象(适当的lock,以确保线程安全),没有太多的额外开销。

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