У нас есть определенное изображение в папке \Images
нашего веб-сайта. Мы должны включить это изображение в файл OpenXml мы генерирующий внутри, и для этого мы используем следующий фрагмент код:Каков рекомендуемый способ загрузки внутреннего файла на веб-сайт?
var logo = Server.MapPath(@"~\Images\logo-new.png");
var imagePart = mainPart.AddImagePart(ImagePartType.Png); // mainPart is of type MainDocumentPart
using (var stream = new FileStream(logo, FileMode.Open))
{
imagePart.FeedData(stream);
}
Позже imagePart
используются для встраивания в документе.
Этот код отлично подходит для разработки, но при развертывании мы получаем System.UnauthorizedAccessException
при попытке открыть файл для потоковой передачи.
Очевидно, что существует проблема разрешения доступа, поскольку Server.MapPath()
преобразует веб-путь в абсолютный путь на диске сервера, и пользователь IIS не имеет на это прав. Мы могли бы обойти это, предоставив доступ всем, но что-то говорит мне, что это не учебник. Разумеется, должен быть способ доступа к этому файлу, который не требует, чтобы мы начали futzing с разрешениями доступа к папке веб-развертывания?