我从IIS 7.5上的ASP.OLD(经典)页面调用.NET4类库。所有的互操作都是好的&电话正在运转。我的问题是,类库在调用时没有从.config文件中获取任何设置。
我在提供ASP.OLD文件的同一文件夹中有一个we.config。我有一个App.Config来自注册类库的文件夹。
我甚至在IIS文件夹中尝试了一个app.config文件。
在类库文件夹中的web.config - 仍然没有乐趣。IIS应用程序池以经典管道模式运行。 如果我在IIS管理器中为网站打开“应用程序设置”,那么值就在那里。
我应该在哪里放置.config文件&该怎么称呼?
的Ta! Ñ
答案 0 :(得分:1)
问题是从ASP通过COM互操作调用.NET dll会将.NET dll加载到默认的AppDomain中。 .NET dll将无法识别加载到ASP.NET应用程序域中的ASP.NET,web.configs,当前IIS请求等。就好像它只是由一些正在运行的exe加载,事实上就是这种情况。
您的dll可以访问的配置信息将是w3wp.exe的配置文件。因此,在您的dll中获取此配置信息的一种方法是(虽然您了解我实际上并未推荐此方法)是将w3wp.exe.config
文件添加到windows\system32\inetsrv
文件夹。这当然是一件可怕的事情,你不应该这样做。
我实际上要做的是创建一个COM可见类,其作用是公开一些表示各种配置设置的属性。属性设置器将值分配给dll的静态空间。然后在ASP应用程序的Global.asa文件中添加一些代码来实现此对象并分配配置值。
dll将在内部引用上述代码设置的静态值。
请注意,在同一个应用程序池中运行的所有ASP应用程序都需要具有相同的配置,因为它们将共享相同的应用程序域。这比同一台机器上的所有ASP应用程序将共享共同配置的其他方法更好。