2011-09-01 26 views
0

我有一個向asp.net應用程序提供郵件發送功能的DLL,這個DLL從其路徑設置在app.config設置中的xml文件讀取它的配置。web.config裏的applicationsettings的相對路徑

我移植的配置到我的web.config內的部分的applicationSettings:

<applicationSettings> 
     <MyNamespace.MailLibrary.Properties.Settings> 
     <setting name="MailTemplatesConfigurationPath" serializeAs="String"> 
      <value>**./_mail/MailTemplatesConfiguration.xml**</value> 
     </setting> 
     <setting name="SenderAddress" serializeAs="String"> 
      <value>[email protected]</value> 
     </setting> 
     </MyNamespace.MailLibrary.Properties.Settings> 
    </applicationSettings> 

一切正常,但我無法找到一個方法來指定相對於Web應用程序根目錄的路徑,MailTemplatesConfigurationPath值總是相對於IIS根,所以:

./_mail/MailTemplatesConfiguration.xml 

變得

c:\windows\system32\inetsrv\_mail\MailTemplatesConfiguration.xml 

有什麼辦法可以引用網站的根路徑嗎?

回答

2

如果你的問題是,你不想在DLL中使用Server.Mappath,具備的功能使用此值接受可以從調用代碼傳入的rootPath的另一個參數。調用代碼不在dll中,可以使用MapPath來獲取rootPath值。

+0

你說得對,我不希望組件被捆綁到一個web應用env ......我正在尋找更「乾淨」的解決方案(即使我現在沒有時間來找到它,我想也有一個:S),但最終將基本根作爲依賴關係的想法是好,謝謝... – mamoo

0

試試這個:

<value>**~/_mail/MailTemplatesConfiguration.xml**</value> 

此外,您可能會發現下面的鏈接有用: http://msdn.microsoft.com/en-us/library/ms178116.aspx

+0

已經嘗試過,但〜未評估... :( – mamoo

+0

)您是否嘗試使用Server.MapPath(「〜」)?提供嘗試解析的代碼可能會有所幫助 –

+0

加載xml文件的代碼是在DLL中,所以我不想在這裏使用Server.MapPath。無論如何,我會按照你的建議發佈代碼片段。 – mamoo