[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

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

コピーした行の挿入が表示されない時はフィルタされていないかチェック