[英]How can I use Server.MapPath inside class library project
我有一個Web應用程序,它有許多類庫項目。 下面是一些示例代碼。
public static class LenderBL
{
static string LenderXml { get { return "MyPathHere"; } }
public static LenderColl GetLenders()
{
var serializer = new XmlSerializer(typeof(LenderColl));
using (XmlReader reader = XmlReader.Create(LenderXml))
{
return (LenderColl)serializer.Deserialize(reader);
}
}
}
我通常會使用Server.MapPath來獲取屬性LenderXml的路徑,但是當我在類庫中使用它時,它將返回父解決方案的路徑,而不是類庫項目的路徑。
有沒有辦法獲得類庫項目本身的路徑?
提前致謝。
var Mappingpath = System.Web.HttpContext.Current.Server.MapPath("pagename.aspx");
希望它有所幫助。
據我所知,您需要當前的裝配位置
static public string CurrentAssemblyDirectory()
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
Server.MapPath
將始終在Web根目錄的上下文中運行。 因此,在您的情況下,Web根目錄是父Web項目。 雖然您的類庫(程序集)看起來像是單獨的項目,但在運行時,它們都在Web項目過程中托管。 因此,有關類庫中的資源需要考慮的事項。
首先,考慮將資源保留在類庫中是否有意義。 也許,您應該在Web項目中使用xml
文件,並在類庫中引用它。 這與MVC項目如何在Web項目中保持其觀點等效。 但是,我認為你不能這樣做。
其次,您可以更改xml
文件的構建屬性。 如果將文件更改為content
並copy-always
在其屬性中進行copy-always
。 該文件將復制到bin目錄。 然后Server.MapPath
應該工作,因為該文件是可訪問的。
第三,您可以將資源設置為嵌入式資源 ,然后在代碼中引用它。 這是一種將所有資源保留在構建程序集本地的方法。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.