У меня есть приложение asp.net mvc, которое имеет форму, которая загружает файл. На моем локальном компьютере, конечно, он работает нормально, но когда я запускаю его на удаленном веб-сервере, я получаю эту ошибку:
Сведения об исключении: System.UnauthorizedAccessException: Доступ к пути «C: \ directory \ mytestfile.csv» запрещен.
ASP.NET не авторизован для доступа к запрошенному ресурсу. Рассмотрите возможность предоставления прав доступа к ресурсу для удостоверения запроса ASP.NET. ASP.NET имеет базовый идентификатор процесса (обычно {MACHINE} \ ASPNET в IIS 5 или Network Service в IIS 6), который используется, если приложение не олицетворяет собой. Если приложение олицетворяет себя с помощью идентификатора, идентификатором будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса.
Чтобы предоставить ASP.NET доступ к файлу, щелкните правой кнопкой мыши файл в проводнике, выберите «Свойства» и перейдите на вкладку «Безопасность». Нажмите «Добавить», чтобы добавить соответствующего пользователя или группу. Выделите учетную запись ASP.NET и установите флажки для нужного доступа.
Ошибка источника:
Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.
моя проблема в том, что я заранее не знаю, какой файл будет загружен (таким образом, средство выбора файлов на экране загрузки), поэтому я не могу предварительно авторизовать его.
вот мой код:
Действие контроллера:
public ActionResult UploadSpreadsheet(HttpPostedFileBase file)
{
var fileName = Path.Combine(Request.MapPath("~/App_Data"), Path.GetFileName(file.FileName));
file.SaveAs(fileName); //This is what blows up . . .
using (CsvReader csv = new CsvReader(new StreamReader(fileName_), true))
{
string[] headers = csv.GetFieldHeaders();
. . . .
Просмотр формы:
<form action="/Resources/UploadSpreadsheet" method="post" id="spreadsheetForm" enctype="multipart/form-data">
<fieldset class=outerFieldSet>
<div class="legendTitle">Sync with Spreadsheet</div><hr /><br /><br />
<label>Choose Spreadsheet: </label><input size="88" class="required" type="file" name="file" />
</fieldset>
<input type="submit" class=longButton value="Syncronize Resource Data" />
</form>