问题
How can i use the server.mappath method in a C# class library class ,which acts as my BusinessLayer for My ASP.NET WEbsite
回答1:
By calling it?
var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");
Make sure you add a reference to the System.Web assembly.
回答2:
You can get the base path by using the following code and append your needed path with that.
string path = System.AppDomain.CurrentDomain.BaseDirectory;
回答3:
You should reference System.Web and call:
HttpContext.Current.Server.MapPath(...)
回答4:
Maybe you could abstract this as a dependency and create an IVirtualPathResolver. This way your service classes wouldn't be bound to System.Web and you could create another implementation if you wanted to reuse your logic in a different UI technology.
回答5:
Use this System.Web.Hosting.HostingEnvironment.MapPath().
HostingEnvironment.MapPath("~/file")
Wonder why nobody mentioned it here.
回答6:
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
回答7:
Architecturally, System.web should not be referred in Business Logic Layer (BLL). Employ BLL into the solution structure to follow the separate of concern principle so refer System.Web is a bad practice. BLL should not load/run in Asp.net context. Because of the reason you should consider using of System.AppDomain.CurrentDomain.BaseDirectory
instead of System.Web.HttpContext.Current.Server.MapPath
来源:https://stackoverflow.com/questions/1199486/server-mappath-in-c-sharp-classlibrary