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

Joh*_*ski 117 c# asp.net server.mappath application-start global-asax

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

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

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

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

Cor*_*rch 288

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

不需要HttpContext.

  • 不.如果启动Reflector,您会注意到Server.MapPath和Request.MapPath最终调用最终调用HostingEnvironment.MapPath的VirtualPath.MapPath.他们都到了同一个地方.HostingEnvironment.MapPath削减了中间人. (9认同)

小智 5

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