2017-04-22 1 views
0

~/Content/EmailTemplate/template.cshtmlのメールテンプレートがあります。しかし、いつでも私たちは、次の手順を実行します紺色のWebアプリケーションでFile.Exitsがfalseを返す実際にファイルが存在する

var path="D:/site/wwwroot/Content/EmailTemplate/template.cshtml" 
File.Exist(path) 

File.Exist(path)戻りfalse。ローカルソースでデバッグしている間は正常に動作します。それは紺碧のWebアプリケーションでのみfalseを返します。私はファイルが既に存在することを確認しました。

+0

コードを実行しているプロセスにこのファイルにアクセスする権限がない場合、 'File.Exists'は' false'を返します。これが事実だろうか? Azureでは、アクセスが制限されたアカウントでコードが実行されている可能性があります。 –

+0

こんにちは@DarinDimitrov許可を確認する方法はありますが、管理者モードのアカウントは –

+0

です。Azure WebアプリケーションファイルはD:/ home/site/wwwrootにありますので、おそらく問題です。しかし、言及したように、パスをハードコードするべきではありません。 – sjkp

答えて

2

上記のコードを別の環境に移動すると、そのコードは破損します。

マップパスを使用することをお勧めします。これは、ホスティング環境からローカル開発環境を含むホスティング環境に移行できることを保証します。

string path = Server.MapPath("~/path/tofile"); 

また、ファイルを正しくターゲティングしていると確信度が高くなります。

0

Azure WebAppの場合、 D:\homeは共有されており、このパスでファイルを読み書きできます。ホームディレクトリアクセスの詳細については、WebApp Sandboxを参照してください。 Azureのファイル構造はdocumentを参照してください。 Kudu(http://yourwebsite.scm.azurewebsites.net/)ツールから参照できます。あなたのケースでは、Azure WebAppで次のコードを使用することもできます。

string path = Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot\Content\EmailTemplate\template.cshtml" 
関連する問題