1

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

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

我什至尝试了 IIS 文件夹中的 app.config 文件和类库文件夹中的 web.config - 仍然没有乐趣。

IIS 应用程序池以经典管道模式运行。如果我在网站的 IIS 管理器中打开应用程序设置,值就在那里。

我应该把 .config 文件放在哪里以及应该叫什么?

塔!ñ

4

1 回答 1

1

问题是通过 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 文件中的 Application start 事件中添加一些代码来实例化此对象并分配配置值。

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

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

于 2012-08-08T19:59:37.293 回答