无法使用Server.MapPath


111

我该做什么Server.MapPath工作?
我有using System.Web;

还有什么?当我键入时Server,没有快速结果选项(智能感知)Server

有什么帮助吗?


1
您需要提供更多信息。这是什么样的项目?您为什么要运行Server.MapPath?这是Web表单项目,您是在Page子类中还是在ASPX的render函数中编写代码?

C#Winforms ..我希望它检查服务器上的文件可用性
a1204773 2012年

Answers:


286

你可以尝试使用这个

    System.Web.HttpContext.Current.Server.MapPath(path);

或使用 HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);

1
它们不起作用。...错误1类型或名称空间名称'HttpContext'在名称空间'System.Web'中不存在(您是否缺少程序集引用?)...错误2类型或名称空间名称'Hosting'名称空间“ System.Web”中不存在
a1204773 2012年

看来您正在使用Winforms,您可能想查看此链接,然后进行调试
.com / bug / 18951

4
我也是,HostingEnvironment.MapPath也可以工作,并且我在控制器之外使用它。
路加福音2014年

首先,您的项目需要引用System.Web.dll,它将可以正常工作
ihebiheb 2016年

如何读取此目录“〜/ AppData / Roaming”中存在的文件?
Murlidhar Fichadia


4

System.Web.HttpContext.Current.Server.MapPath("~/") 如果从线程调用它,则给出null。

所以,尝试使用

System.Web.Hosting.HostingEnvironment.MapPath("~/")


1

System.web如果没有,Firt会添加对的引用。在参考文献中这样做文件夹中。

然后,您可以使用 Hosting.HostingEnvironment.MapPath(path);


1
bool IsExist = System.IO.Directory.Exists(HttpContext.Current.Server.MapPath("/UploadedFiles/"));
if (!IsExist)
    System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath("/UploadedFiles/"));

StreamWriter textWriter = File.CreateText(Path.Combine(HttpContext.Current.Server.MapPath("/UploadedFiles/") + "FileName.csv"));
var csvWriter = new CsvWriter(textWriter, System.Globalization.CultureInfo.CurrentCulture);
csvWriter.WriteRecords(classVM);

仅代码答案被认为是低质量的:确保提供解释代码的作用以及如何解决问题。如果您可以在帖子中添加更多信息,它将对询问者和将来的读者都有帮助。请参阅解释完全基于代码的答案
Calos



0

我知道这篇文章已有几年历史了,但是我要做的是将此行添加到类的顶部,您仍然可以使用Server.MapPath

Dim Server = HttpContext.Current.Server

或者你可以做一个功能

Public Function MapPath(sPath as String)
    return HttpContext.Current.Server.MapPath(sPath)
End Function

我就是要让事情变得容易。我还把它添加到了Utilities类中,以防万一我再次遇到这个问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.