Server.MapPath()

5

我想使用Server.MapPath()方法将我创建的虚拟目录映射到其物理路径。

问题是.net环境不识别Server.MapPath()。

Google告诉我应该使用System.Web下的HttpContext.Current.Server,但是即使我使用了System.Web,HttpContext也没有被识别。(我已经检查过,HttpContext是System.Web的一个类)

请帮忙解决?


'.net环境无法识别Server.MapPath()'。是否有任何错误? - rahul
1
你是否将System.Web作为项目的引用包含进去了? - rslite
2
你能分享一段你正在尝试做的代码示例吗? - Fredrik Mörk
2
我真的很傻,没有告诉你我使用的.NET版本就问这个问题。对此感到抱歉。我已经解决了这个问题。问题在于我正在使用不再包括server.mappath()而是HttpServerUtility.MapPath()的.NET 3.5版本。非常感谢! :) - user181218
3个回答

3

请确保在项目的引用中包含了System.Web。

  1. 右键单击项目节点(解决方案资源管理器窗口)。
  2. 在上下文菜单中,点击“添加引用”。
  3. 在.NET选项卡列表项中选择System.Web。
  4. 点击“确定”按钮。

这样就可以使用Server.MapPath了。


这个解决方案对我很有用,因为我正在一个类库中工作。 - Bat_Programmer

3
如果您有一个Web应用程序,应该自动引用System.Web.dll,并且您应该可以访问System.Web.HttpContext类。请检查您是否意外删除了引用。如果没有完整的命名空间,请使用using System.Web;语句访问HttpContext类。
如果您没有Web应用程序,则需要添加对System.Web.dll的引用才能访问HttpContext类,但这不会对您有任何帮助。因为您不在Web应用程序中,所以没有HTTP上下文和Web根文件夹,因此无法使用MapPath方法。

这可能是一个单独程序集中的方法,被 Web 应用程序使用,因此上下文最终可能会在那里。 - rslite
@rslite:是的,你说得对。这也可能是引用丢失的原因之一。 - Guffa

1

我也遇到了同样的问题。在一个ASP.net 4.0 Web应用程序中,在一个.ashx处理程序中,顶部有using System.Web。我无法使用书上说要使用的Server.MapPath()或者Google和MSDN一直出现的System.Web.HttpServerUtility.MapPath()。我也不能像上面提到的那样使用HttpServerUtility.MapPath()

然而,这里的另一个答案促使我尝试context.Server.MapPath(),它确实在我的ProcessRequest(HttpContext context)方法中起作用。


更加精确地说:HttpContext.Current.Server.MapPath() - Nurp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接