httpcontext.current.server.mappath对象引用未设置为对象的实例

本文关键字:对象 实例 设置 current server mappath 对象引用 httpcontext | 更新日期: 2023-09-27 18:03:55

我在一个类中使用了以下代码:

string filePath = HttpContext.Current.Server.MapPath("~/email/teste.html");

test .html文件在

文件夹中

但是当它打开文件时,会产生以下错误:

对象引用未设置为对象的实例。

httpcontext.current.server.mappath对象引用未设置为对象的实例

不要使用Server.MapPath。它是缓慢的。用这个代替,HttpRuntime.AppDomainAppPath。只要您的网站正在运行,此属性始终对您可用。

然后像这样使用:

string filePath = Path.Combine(HttpRuntime.AppDomainAppPath, "email/teste.html");

如果代码不是在执行httprequest的线程中运行,那么HttpContext.Current就是null(例如当您的方法通过BeginInvoke调用时)-参见http://forums.asp.net/t/1131004.aspx/1。

您可以始终使用HttpRuntime,参见http://msdn.microsoft.com/en-us/library/system.web.httpruntime.aspx

如果没有HttpContext(例如,当方法通过BeginInvoke调用时,正如Yahia指出的那样),对HttpContext.Current.Server.MapPath()的调用必须失败。对于这些场景,在System.Web.Hosting名称空间中有HostingEnvironment.MapPath()

string filePath = HostingEnvironment.MapPath("~/email/teste.html");

您可以使用下面的代码。有一件事要注意的是,我正面临着一个问题,我试图从TestMethod中访问一个。txt文件,除了这个之外,一切都失败了……它也适用于非单元测试场景。

string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,@"..'..") + "''email''teste.html";

问题:我在类库项目中有一个"Images"文件夹。但是使用上面的答案,我无法获得文件夹的物理路径来读取/写入该文件夹中的文件。

解决方案:下面的代码为我在类库项目中获得物理路径。

string physicalPath = System.IO.Path.GetFullPath("..''..''Images");

我希望它能帮助到那些和我面临同样问题的人。