クラス内で次のコードを使用しています。
string filePath = HttpContext.Current.Server.MapPath("~/email/teste.html");
ファイルteste.htmlはフォルダー内にあります
ただし、ファイルを開くと、次のエラーが生成されます。
オブジェクト参照がオブジェクトインスタンスに設定されていません。
Server.MapPathを使用しないでください。遅いです。代わりにこれを使用してください、HttpRuntime.AppDomainAppPath
。 Webサイトが実行されている限り、このプロパティは常に利用可能です。
次に、次のように使用します。
string filePath = Path.Combine(HttpRuntime.AppDomainAppPath, "email/teste.html");
コードがスレッド内から実行されていない場合、httprequest
を実行している場合、HttpContext.Current
はnull
です(たとえば、メソッドがBeginInvoke
を介して呼び出される場合)- http://forums.asp.net/t/1131004.aspx/1 を参照してください=。
常に使用できますHttpRuntime
see http://msdn.Microsoft.com/en-us/library/system.web.httpruntime.aspx
HttpContext
がない場合(たとえば、Yahiaが指摘したようにBeginInvoke
を介してメソッドが呼び出された場合)、HttpContext.Current.Server.MapPath()
の呼び出しは失敗する必要があります。これらのシナリオでは、_System.Web.Hosting
_名前空間にHostingEnvironment.MapPath()
があります。
_string filePath = HostingEnvironment.MapPath("~/email/teste.html");
_