关于c#:httpcontext.current.server.mappath对象引用未设置为对象的实例

httpcontext.current.server.mappath Object reference not set to an instance of an object

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

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

文件teste.html在文件夹中

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

Object reference not set to an instance of an object.


不要使用server.mappath。它很慢。用这个来代替,HttpRuntime.AppDomainAppPath。只要您的网站正在运行,此属性始终对您可用。

然后这样使用:

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


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

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


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

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