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文件在
文件夹中但是当它打开文件时,会产生以下错误:
对象引用未设置为对象的实例。
不要使用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");
我希望它能帮助到那些和我面临同样问题的人。