这是一个很难的问题。
我们有一个ASP.NET应用程序,IIS7服务器(运行经典管道,如果它相关)和一个胖丑陋的COM对象库
应用程序以这种方式使用此库:调用函数,获取结果,显示它
问题是:COM库没有更改语言首选项的功能 - 它从“web.config”文件初始化它,然后没有明显的方法来改变它。
问题是:如何以非平凡的方式做到这一点。我可以使用ASP.NET应用程序和服务器本身的一些东西做任何事情
基本上,我认为,我需要以某种方式为应用程序池线程调用 SetThreadCultureUI()。
当然,我有可能为每种语言创建少量应用程序域,并在其中加载COM,但编码过多。
Soo ..任何想法都是以最快最简单的方式做到的吗? (包含一个应用程序副本的多个应用程序池已经是一个使用过的解决方案,但是一个很糟糕的解决方案)
答案 0 :(得分:0)
你需要做一些测试。如果COM应用程序确实正在从web.config中读取语言设置(坦白说,如果确实如此,这将是相当不寻常的),那么你可以做的并不多。重写web.config真的很难,尤其是因为你在保存文件时重启了应用程序池!
但是,如果它检查操作系统是否存在给定线程的文化,则可以在代码中使用BackgroundWorker
来生成新线程。在那里,你可以设置文化,并调用你的COM对象(适当的lock
以确保线程安全),而不需要太多的额外开销。
或者,是的,多个应用程序池是一个重量级但却无关紧要的问题答案。我认为这是唯一的解决方案,如果COM库确实读取web.config。