IIS 7.5 ASP.OLD.NET4类库(dll)未读取.Config

IIS 7.5 ASP.OLD.NET4类库(dll)未读取.Config,dll,.net-4.0,asp-classic,iis-7.5,Dll,.net 4.0,Asp Classic,Iis 7.5,我正在从IIS 7.5上的ASP.OLD(经典)页面调用.NET4类库。所有互操作都正常&呼叫正在工作。我的问题是,调用类库时,它没有从.config文件获取任何设置 我在提供ASP.OLD文件的同一文件夹中有一个we.config。我在类库注册的文件夹中有一个App.Config 我甚至尝试过IIS文件夹中的app.config文件和类库文件夹中的web.config文件,但仍然没有乐趣 IIS应用程序池正在经典管道模式下运行。 如果我在网站的IIS管理器中打开应用程序设置,则会显示相应的值

我正在从IIS 7.5上的ASP.OLD(经典)页面调用.NET4类库。所有互操作都正常&呼叫正在工作。我的问题是,调用类库时,它没有从.config文件获取任何设置

我在提供ASP.OLD文件的同一文件夹中有一个we.config。我在类库注册的文件夹中有一个App.Config

我甚至尝试过IIS文件夹中的app.config文件和类库文件夹中的web.config文件,但仍然没有乐趣

IIS应用程序池正在经典管道模式下运行。 如果我在网站的IIS管理器中打开应用程序设置,则会显示相应的值

我应该把.config文件放在哪里&应该调用什么


助教!N

问题在于,通过COM互操作从ASP调用.NET dll会将.NET dll加载到默认的AppDomain中。.NET dll将不知道加载到ASP.NET应用程序域中的dll将不知道ASP.NET、web.configs、当前IIS请求等。这就好像它仅仅是由某个正在运行的exe加载的,事实上就是这样

dll将有权访问的配置信息将是w3wp.exe的配置文件。因此,在dll中获取此配置信息的一种方法(尽管您知道我实际上并不推荐这种方法)是将
w3wp.exe.config
文件添加到
windows\system32\inetsrv
文件夹中。这当然是一件可怕的事情,你不应该这样做

我实际上要做的是创建一个COM可见类,它的工作是公开一些表示各种配置设置的属性。属性设置程序会将值分配到dll的静态空间。然后将一些代码添加到ASP应用程序的Global.asa文件中的应用程序启动事件中,以实例化此对象并分配配置值

dll将在内部引用由上述代码设置的静态值


请注意,在同一应用程序池中运行的所有ASP应用程序都需要具有相同的配置,因为它们将共享相同的应用程序域。这比另一种方法要好,在这种方法中,同一台计算机上的所有ASP应用程序都将结束共享一个公共配置。

问题在于,通过COM interop从ASP调用.NET dll将把.NET dll加载到默认的AppDomain中。.NET dll将不知道加载到ASP.NET应用程序域中的dll将不知道ASP.NET、web.configs、当前IIS请求等。这就好像它仅仅是由某个正在运行的exe加载的,事实上就是这样

dll将有权访问的配置信息将是w3wp.exe的配置文件。因此,在dll中获取此配置信息的一种方法(尽管您知道我实际上并不推荐这种方法)是将
w3wp.exe.config
文件添加到
windows\system32\inetsrv
文件夹中。这当然是一件可怕的事情,你不应该这样做

我实际上要做的是创建一个COM可见类,它的工作是公开一些表示各种配置设置的属性。属性设置程序会将值分配到dll的静态空间。然后将一些代码添加到ASP应用程序的Global.asa文件中的应用程序启动事件中,以实例化此对象并分配配置值

dll将在内部引用由上述代码设置的静态值

请注意,在同一应用程序池中运行的所有ASP应用程序都需要具有相同的配置,因为它们将共享相同的应用程序域。这比另一种方法要好,在这种方法中,同一台计算机上的所有ASP应用程序都将共享一个公共配置