3

我正在开发一个自定义 HttpHandler,为此我编写了一个 C# 类库并编译为 DLL。

作为其中的一部分,我有一些我不想在应用程序中硬编码的目录位置,所以我试图把它放在我以前使用过的 app.config 中。

在此之前,只需构建app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Share" value="C:\...\"/>
  </appSettings>
</configuration>

然后在如下代码中获取它:

var shareDirectory = ConfigurationManager.AppSettings["Share"];

但是当我编译它并将它放在 web 服务的 bin 文件夹中时,它一直为空shareDirectory,可能是因为它找不到 app.config。那么如何确保包括在内,这样我就不必对我的目录位置进行硬编码?我注意到它基本上在编译后我们会得到 assembly.dll 和 assembly.dll.config 这是 app.config 文件,所以它肯定在 bin 文件夹中!

4

3 回答 3

3

那是因为您的网络服务使用web.config

于 2010-06-01T00:23:11.610 回答
2

您需要将配置放在 web.config 文件中,而不是在 assembly.dll.config 中:.NET 不会(按设计)读取 assembly.dll.config 文件。

于 2010-06-01T00:23:01.000 回答
2

您可能混淆了类库的范围。

请记住,您的配置,无论是 web.config 还是 app.config,都是 HOSTING 应用程序中存在的配置。在这种情况下,您的托管应用程序是 WebService,当然由 IIS 托管,因此您的配置文件是 web.config。

如果您有一个控制台应用程序以某种方式使用了该类库(尽管可能不在 http 处理程序上下文中),那么配置将是控制台应用程序中的 app.config,而不是您的类库中的 app.config。

于 2010-06-01T00:27:53.733 回答