Directory.CreateDirectory создает папку, к которой нет доступа в Visual Studio - PullRequest
0 голосов
/ 30 августа 2018

Следующий код используется для создания новой папки в каталоге проекта:

[HttpPost]
[ActionName("Create")]
public ActionResult Create(Item model)
{
    string s = model.Category.Name;
    if (ModelState.IsValid && model.imageUpload != null && model.imageUpload.ContentLength > 0)
    {
        string initialPath = string.Format("~/Images/Products/" + s + "/"); 
        var virtualPath = Path.Combine(initialPath, model.imageUpload.FileName); 
        var d = Directory.CreateDirectory(string.Format(Server.MapPath(initialPath)));             
        var extension = Path.GetExtension(model.imageUpload.FileName);
        var validImageTypes = new[] { ".gif", ".GIF", ".jpg", ".JPG", ".jpeg", ".JPEG", ".pjpeg", ".PJPEG", ".png", ".PNG" };
        if (!validImageTypes.Contains(extension))
        {
            ModelState.AddModelError("imageUpload", "Please add a valid format picture (i.e., a .gif,.jpg or .png image");
            return View();
        }
        model.imageUpload.SaveAs(Server.MapPath(virtualPath));
        model.imageUrl = virtualPath;

        db.Items.Add(model);
        db.SaveChanges();
        TempData["name"] = model.ItemName;
        return RedirectToAction("Create");
    }
    model.Categories = new SelectList(db.Categories.ToList(), "Name", "Name");
    model.Brands = new SelectList(db.Brands.ToList(), "Name", "Name");
    return View(model);
}

Код работает как блеск и создает нужную папку в нужном каталоге. Проблема, возникающая в настоящее время, заключается в том, что при чтении из вновь созданной папки Visual Studio не может выполнить чтение из папки, и браузер выдает ошибку 404 (файл не найден) при чтении из нее.

Это связано с разрешениями? Я проверил вновь созданные разрешения для папок, и для них установлено «Полный доступ» для «Все».

Может кто-нибудь, пожалуйста, руководство?

1 Ответ

0 голосов
/ 30 августа 2018

Возможно, вам нужно добавить статический обработчик файлов для этого пути - если он находится под путем вашего веб-приложения, то IIS не будет обслуживать статические файлы, поскольку это представляет угрозу безопасности.

Либо замените URL-адрес файла действием, которое считывает файл и возвращает его, либо добавьте статический обработчик файла в файл web.config для этого пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...