2011-07-06 9 views
6

電子メールと呼ばれるサブフォルダを持つASP.NET MVCプロジェクトがあります。これには、自分のメールテンプレート用のHTMファイルが含まれています。サイトの特定の時点で、私はこれらのテンプレートのいずれかをロードして電子メールで送信する必要があるコントローラを持っています。ファイルシステムのASP.NET MVCサイトのパスを取得します

私がしようとしているのは、現在の実行中のアセンブリのパスを取得するためにリフレクションを使用することですが、期待通りに機能しません。私は戻って取得していますパス:

var directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

「C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319一時 ASP.NETジル\ SSL \ 1da130c4 \ f8e7810e \ \アセンブリ\ DL3 \ 5f253aca \ 1a71f123_e83bcc01 \メール\ ProductAccountConfirmation.htm」

サイトは、Visual Studioを経由してIISでホストされているように私は、これは奇妙な見つけます。私はこれが私のプロジェクトフォルダ内のDLLの場所と生産のIISの展開フォルダに私に与えるだろうと思っただろう。

答えて

9

あなたが探しているのはServer.MapPath()です。実行しているアプリケーションのパスが表示されます。

1

ASP.Netでは、アセンブリはコピーされ、実行時に使用されるコピーです。プロジェクトフォルダ内のDLLは単なるテンプレートです。

どのような目的でこのディレクトリが必要ですか?あなたの目的を達成する別の方法があるかもしれません。

1

あなたはしてアプリケーションのルートパスを取得することができます

@HostingEnvironment.ApplicationPhysicalPath 
4

だからあなたはあなたの電子メールのサブフォルダにtemplate1.htmlと呼ばれるファイルを持っているとしましょう。このコードは、そのHTMLファイルの完全なパスを与える必要があります。

HttpContext.Current.Server.MapPath("/") + "\\emails\\template1.html"; 
3
AppDomain.CurrentDomain.BaseDirectory 
+0

あなたがポストに応答すると、説明や詳細リンクを追加してください。 – AFract

+0

IISの下にあるサブサイトのWebサイトでも機能します。 –

関連する問題