Pages

2014/08/22

[ASP.NET MVC] FilePathResult で zip ファイルを返す際にエラーが発生する。

'/' アプリケーションでサーバー エラーが発生しました。

パス 'C:\temp\exportroot\Osg2-20033-Osg2sFileImporter-Batchlog_20140818132059430' へのアクセスが拒否されました。

説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 

例外の詳細: System.UnauthorizedAccessException: パス 'C:\temp\' へのアクセスが拒否されました。 

ASP.NET は、要求されたリソースへのアクセスを許可されていません。ASP.NET の要求 ID に、リソースへのアクセス権を付与することを検討してください。アプリケーションが偽装していない場合、ASP.NET では基本プロセス ID (通常、IIS 5 では {コンピューター名}\ASPNET、IIS 6 および IIS 7 ではネットワーク サービス、IIS 7.5 では構成済みのアプリケーション プール ID) が使用されます。 を通じてアプリケーションが偽装している場合、ID は匿名ユーザー (通常は IUSR_MACHINENAME) または認証された要求元ユーザーになります。 

ASP.NET にファイルへのアクセスを許可するには、エクスプローラーでファイルを右クリックし、[プロパティ] を選択して、[セキュリティ] タブを選択します。[追加] をクリックして、適切なユーザーまたはグループを追加します。ASP.NET アカウントを強調表示し、希望するアクセスのボックスをチェックします。

エラーメッセージから、権限が足りないのかと思ったのだが、実は引数が間違えていた。fileName はフルパスを指定する。

// 上記のエラー
File("C:\temp", "application/zip", "file.zip");

// ダウンロード可能。
File("C:\temp\file.zip", "application/zip", "file.zip");
FilePathResult コンストラクター - msdn
http://msdn.microsoft.com/ja-jp/library/system.web.mvc.filepathresult.filepathresult(v=vs.118).aspx
Related Posts Plugin for WordPress, Blogger...