Невозможно загрузить файл в MVC - PullRequest
1 голос
/ 23 августа 2011

У меня есть следующий код:

var ordinaryPropertyValue = new Catalog.Core.Entities.OrdinaryPropertyValue();

Environment.CurrentDirectory = System.IO.Path.GetTempPath();

var fileFile = Request.Files["File" + prop.Id];

if (fileFile == null) continue;

string pathFile = Environment.CurrentDirectory;

fileFile.SaveAs(pathFile);

ordinaryPropertyValue.Value = pathFile;

instance.SetPropertyValue(prop.Id, ordinaryPropertyValue);

Но я не могу загрузить свой файл, потому что следующая проблема:

AccessException: Доступ к пути «C: \ Users \ Michael \ AppData \ Local \ Temp» запрещен.

Ответы [ 3 ]

0 голосов
/ 23 августа 2011

Я предполагаю, что вы используете IIS на локальном компьютере, и в этом случае вам, возможно, потребуется предоставить разрешение на запись в этот каталог учетной записи, под которой работает веб-приложение (с использованием встроенного сервера VS, запускаемого под вашей учетной записью),

Если вы используете IIS 7 +, это «ApplicationPoolIdentity», в противном случае это «СЕТЕВОЙ СЕРВИС»

PS Я также не рекомендую изменять настройки среды.

0 голосов
/ 25 августа 2011

Спасибо за помощь, но реальная причина была не в доступе, как вы сказали. Настоящей причиной было пустое "" значение. Итак, я переделал свой код, такой как:

var ordinaryPropertyValue = new Catalog.Core.Entities.OrdinaryPropertyValue();

var fileFile = Request.Files["File" + prop.Id];

if (fileFile == null)
    continue;

string pathFile = Server.MapPath("~/temp");

string filenameFile = Path.GetFileName(fileFile.FileName);

if (!string.IsNullOrEmpty(filenameFile))
{
    fileFile.SaveAs(Path.Combine(pathFile, filenameFile));

    ordinaryPropertyValue.Value = Path.Combine(pathFile, filenameFile);

    instance.SetPropertyValue(prop.Id, ordinaryPropertyValue);
}
0 голосов
/ 23 августа 2011

Это исключение безопасности, поскольку исполняющий пользователь вашего веб-приложения не имеет прав на запись в целевой путь.

Обратите внимание, что вы пытаетесь сохранить файл в путь к каталогу без имени файла.

Ваш код в любом случае беспорядок, лично я бы НЕ назначил / изменил Environment.CurrentDirectory

...