我正在开发一个自定义的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
获取null,可能是因为它无法找到app.config。那么我如何确保包含这些内容,以便我不必对我的目标位置进行硬编码?我注意到它基本上在编译后我们得到了assembly.dll和assembly.dll.config这是app.config文件,所以它绝对存在于bin文件夹中!
答案 0 :(得分:3)
这是因为您的网络服务使用web.config
答案 1 :(得分:2)
您需要将配置放在web.config文件中,而不是在assembly.dll.config中:.NET不(按设计)读取assembly.dll.config文件。
答案 2 :(得分:2)
您可能会混淆类库的范围。
请记住,您的配置,无论是web.config还是app.config,都是HOSTING应用程序中的配置。在这种情况下,您的托管应用程序是WebService,当然由IIS托管,因此您的配置文件是web.config。
如果你有一个控制台应用程序以某种方式使用该类库(虽然可能不在http处理程序上下文中),那么配置将是控制台应用程序中的app.config,而不是类库中的app.config。