2010-06-01 44 views
3

我正在开发一个自定义的HttpHandler,为此我编写了一个C#类库并编译为DLL。为什么这个类库没有从app.config获取信息

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

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

然后在这样的代码获得此:

在此之前已经只是要建立的app.config工作

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

但是,当我编译它,把它放在该web服务的bin文件夹,它始终为空shareDirectory,可能是因为它找不到app.config。那么,我如何确保这是包含在内的,因此我不必对我的direcotry位置进行硬编码?我注意到它基本上在编译后会得到assembly.dll和assembly.config,它是app.config文件,所以它在bin文件夹中定义在那里!

回答

2

你可能混淆你的类库的范围。

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

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

2

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

3

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