Хорошо, у меня тоже была эта проблема, и я только что решил ее. Основная проблема заключалась в том, что в базе данных сада были записи для медиафайлов, которых больше не существовало. Это произошло потому, что мы только что изменили наш проект, чтобы использовать хранилище Azure, а база данных по-прежнему указывала на образы, которые находились в других областях наших локальных жестких дисков. (Орчард нажимал метод, чтобы проверить, действительно ли существует большой двоичный объект, пытаясь получить его общедоступный URL-адрес, и если это не так, он выдает исключение.)
Я сделал две вещи, чтобы исправить это. Во-первых, я удалил все ссылки на старые изображения из базы данных. В таблице [Orchard_MediaLibrary_MediaPartRecord] в базе данных orchard есть все имена файлов. Вы можете проверить там, есть ли какие-либо ссылки на файлы, которые, как вы знаете, не существуют.
Во-вторых, поскольку над нашей CMS работает несколько разработчиков, но с использованием центральной базы данных, я беспокоился, что позже она снова сломается, когда мы добавим изображения в наши локальные файловые системы Azure. В итоге я зашел в файл AzureFileSystem.cs и изменил его, чтобы он возвращал пустую строку, а не выдавал исключение, если большой двоичный объект не найден:
Я изменил строки 297 и 298 на это:
try
{
Container.EnsureBlobExists(String.Concat(_root, path));
return Container.GetBlockBlobReference(String.Concat(_root, path)).Uri.ToString();
}
catch
{
return "";
}
Теперь, даже если он не может найти изображение, он все равно показывает те, которые МОЖЕТ найти.
Надеюсь это поможет. Возможно, вы не запускаете что-то через Azure, но вы все равно можете удалять записи из базы данных, которые там не нужны.
person
Devin
schedule
13.09.2013