我有一個共享的報告DLL在Windows和Web都使用。我現在試圖將Windows程序移到.NET 4客戶端配置文件,因此需要避免System.Web引用。反思,以避免System.Web參考
在某些時候,代碼需要獲取網站的目錄或dll的目錄。我使用的代碼是這樣的:
string path;
if (HttpContext.Current != null)
{
path = HttpContext.Current.Server.MapPath("default.aspx");
}
else
{
path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
}
是否有使用反射或類似避免的System.Web參考,所以我仍然可以得到適當的路徑的方法嗎?如果是這樣,我該怎麼做?
任何替代品?
編輯 我之所以想這樣做,這是我使用,可以採取一個樣式表文件,並將其應用到報告的報告系統(我這樣做是爲所有報告)。作爲一個設置,我以前在DLL本身mystylesheet.repss。所以如果我想改變樣式,我只是改變它在DLL中,它適用於所有報告。那麼就是把合適的repss文件放到windows和網站的根目錄下。找到適合他們的路徑。
試圖在dll中使用相對路徑導致問題。通過報告。\ mystylesheet.repss在Windows中正常工作,但試圖〜/ mystylesheet.repss。\ mystylesheet.repss或其他任何我能從web中的DLL中想到的結果都是在錯誤的目錄中查找「c:\ windows \ system32 \ INETSRV」。
我可以將設置移動到每個不同的窗口和網絡應用程序,並將其傳入完整路徑,看起來倒退如此做,當它真的是一個dll的內部設置。
希望這一切都有道理。
將基本路徑從客戶端代碼傳遞到庫中不是更好嗎? – Lazarus
我可以做到這一點,但寧願不必。我只是添加一個編輯來解釋我爲什麼要這樣做。 – PeteT