2010-06-01 91 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