If you execute this statement from a class that inherits from the page class, you can simply use the
DataBase = Server.MapPath ("Data.mdb");
Otherwise write full namespace: System.Web.HttpContext.Current.Server.MapPath ();
Total Note: The path obtained by Server.MapPath is the physical path on the server, that is, the absolute path that is always said
1, Server.MapPath ("/")
Note: Obtain the location of the application root directory, such as C:\Inetpub\wwwroot\.
2, Server.MapPath ("./")
Note: Get the current directory on the page, equivalent to Server.MapPath ("").
3, Server.MapPath (".. /")
Note: Get the parent directory for your page.
4, Server.MapPath ("~/")
Note: Get the current application-level program directory, if it is the root directory, is the root directory, if it is a virtual directory, is the location of the virtual directory, such as C:\Inetpub\wwwroot\Example\.
The use of httpcontext.current,httpcontext.current in multi-threaded is given null.
So the thread calls the method, and the System.Web.HttpContext.Current.Server.MapPath () inside the class in the method cannot get the object.
This should be used:
public static string MapPath (String strpath)
{
if (httpcontext.current! = null)
{
Return HttpContext.Current.Server.MapPath (strpath);
}
else//non-Web program reference
{
strpath = Strpath.replace ("/", "\ \");
if (strpath.startswith ("\ \"))
{
strpath = strpath.substring (strpath.indexof (' \ \ ', 1)). TrimStart (' \ \ ');
strpath = Strpath.trimstart (' \ \ ');
}
Return System.IO.Path.Combine (AppDomain.CurrentDomain.BaseDirectory, strpath);
}
}
http://blog.csdn.net/lego2816/article/details/6781677
Turn: Server.MapPath Related