Я переношу ASP.NET4.5 на сайт ASP.NET 5. Одна функция, которую мы вернули изображения с жесткого диска из абсолютного местоположения. Файлы arent хранятся в веб-каталоге. Раньше это работало нормально, со следующим кодом:Подавать файл извне wwwroot
public ActionResult GetVideoImage(string serialNumber, int videoEntryId)
{
try
{
var serial = Device.FriendlySerialNumberToNumericalSerialNumber(serialNumber);
var entry = this.service.GetVideoEntry(serial, videoEntryId);
if (entry != null && System.IO.File.Exists(entry.FirstVideoFrameLocation.LocalPath))
{
return this.File(entry.FirstVideoFrameLocation.LocalPath, "image/jpeg"); // adjust content type appropriately
}
}
return this.Redirect("/content/noimage.png");
}
К сожалению, это не работает больше, и выдает исключение. Из того, что я могу сказать, потому что this.File
теперь принимает virtualPath
, а не абсолютный, поэтому отказывается от идеи обслуживать файл из-за пределов своего веб-каталога.
- Как я могу обойти это?
- Также есть
ActionResult
еще лучший тип возврата для этого?
Можете ли вы перенести эти файлы в веб-сайт? Причина, по которой это изменилось, - это, по моему мнению, проблема безопасности: если веб-сайт ограничен службой вещания в веб-каталоге, то гораздо труднее атаковать на веб-сайте, чтобы возвращать случайные данные с остальной части компьютера. –
Возможно, вы читаете изображения как поток и возвращаете этот поток? – Thorarins
@MichaelKohne К сожалению, нет, на моей машине dev ее просто в другой папке. В процессе производства файлы могут обслуживаться с другой машины – Chris