Загрузка папок на файловый ресурс с помощью основного веб-сайта ASP.NET - PullRequest
0 голосов
/ 06 мая 2019

Я хочу, чтобы моя папка «Uploads» находилась на файловом ресурсе.

Причина, по которой я хочу это: Резервный интерфейс.

Поэтому вместо сохранения в:

C: \ inetpub \ wwwroot \ wwwroot \ Uploads

Загрузки должны быть сохранены в:

\\ fileshare01 \ MyWebsite \ Uploads

Я знаю, что VirtualDirectories существует.Это работает для чтения с файлового ресурса, но запись в каталог Uploads все еще выполняет запись на локальный диск.Таким образом, с помощью VirtualDirectories я могу получить доступ к http://localhost/Uploads/myfile.png, который на самом деле находится на файловом ресурсе, НО новые файлы там не записываются!

Здесь (упрощенно) как я сохраняю файлы:

IFormFileCollection files = Request.Form.Files;
var file = files.First();
using (var stream = new FileStream(@"Uploads\myfile.png", FileMode.Create))
{
    await file.CopyToAsync(stream);
}

Когда я пытаюсь сохранить новый сетевой путь как абсолютный путь, мне кажется, что мне требуются более высокие разрешения, и в результате возникает ошибка 500.30.Я думаю, потому что у пользователя пула приложений слишком мало прав, что я считаю хорошей вещью.

Мой вопрос:

Как эта проблема решается в качестве хорошей практики?Разве все не должно работать автоматически при настройке VirtualDirectory, включая запись?

1 Ответ

0 голосов
/ 06 мая 2019

Решил это. Я только что получил ошибку 500.30 из-за ошибки в моем appconfig.json. Я не избежал обратной косой черты в моем базовом пути.

Я нашел это сообщение в блоге высказывание

Нет необходимости добавлять «виртуальный каталог» в IIS, этот материал осуждается

и объяснение того, как это делается с помощью метода Startup.cs Configure ():

app.UseFileServer(new FileServerOptions
{
    FileProvider = new PhysicalFileProvider(@"\\server\path"),
    RequestPath = new PathString("/MyPath"),
    EnableDirectoryBrowsing = false
});

Решена еще одна загадка конфигурации ASP.NET Core:)

...