我怎样才能使用global.asax中的Server.MapPath()?

时间:2009-06-01 17:57:25

标签: c# asp.net global-asax server.mappath application-start

我需要使用Server.MapPath()来合并我存储在web.config中的一些文件路径。

但是,由于Server.MapPath()依赖于当前的HttpContext(我认为),我无法做到这一点。在尝试使用该方法时,即使它“可用”,我也会遇到以下异常:

  

在此上下文中无法使用服务器操作。

是否有另一种方法可以将网络根目录相对目录(例如~/App_Data/)映射到完整的物理路径,例如C:\inetpub\wwwroot\project\App_data\

4 个答案:

答案 0 :(得分:282)

您可以尝试System.Web.Hosting.HostingEnvironment.MapPath()

不需要HttpContext。

答案 1 :(得分:4)

使用AppDomain.CurrentDomain.BaseDirectory因为Context可能会返回null !!

答案 2 :(得分:1)

在Global.asax中,使用 上下文 对象:

context.Server.mappath()

Context还允许您访问会话集合,请求对象和响应对象。当您想记录错误时非常有用,例如

答案 3 :(得分:-3)

你可以试试HttpContext.Current.Server.MapPath(“/”) - 这就是我之前在课堂上引用它的方法。