2016-04-20 9 views
1

Я хочу, чтобы получить миниатюру из файла в Kentico 8.2, так что я использую метод, как показано ниже:ProviderException при создании объекта MediaFileInfo в Kentico

private void ThumbnailTest() 
{ 
    var siteInfo = SiteInfoProvider.GetSiteInfo(ConfigUtils.Tribes.SiteId); 
    MediaLibraryInfo libraryInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo(ConfigUtils.Tribes.MediaLibraryID); 

    string filePath = string.Format(@"D:\\Kentico\{0}\{1}\Homepage\{2}", siteInfo.SiteName, libraryInfo.LibraryFolder, "top_banner_1.jpg"); 
    MediaFileInfo fileInfo = new MediaFileInfo(filePath, libraryInfo.LibraryID, libraryInfo.LibraryFolder); // <-- exception occurs here 

    var thumbnail = MediaFileInfoProvider.GetImageThumbnail(fileInfo, ConfigUtils.Tribes.MediaLibraryPath, ConfigUtils.Tribes.SiteName); 
} 

но исключение возникает при создании MediaFileInfoObject.

System.Configuration.Provider.ProviderException: Метод только поддерживается, если параметр имя пользователя совпадает с именем пользователя в текущей Windows Identity.

Я использую Kentico как платформу контента на удаленном сервере «A», и я хочу получить миниатюру для приложения MVC с моего локального хоста.

Почему происходит это исключение и что я делаю неправильно?

Спасибо за предложения!

UPDATE 1:

MediaFileInfo объект ищет каталог на локальном хосте, но не путь на удаленном сервере, и думаю, что это главная проблема.

Мое приложение - отдельный веб-сайт MVC, которому необходимо получить эскиз изображения с другого домена (сервера).

UPDATE 2:

private void ThumbnailTest() 
{ 
    MediaLibraryInfo libraryInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo(ConfigUtils.Tribes.MediaLibraryID); 
    var mediaFileInfo = MediaFileInfoProvider.GetMediaFileInfo(libraryInfo.LibraryID, "Homepage/top_banner_1.jpg"); // success here, file found! 
    var thumbnail = MediaFileInfoProvider.GetImageThumbnail(mediaFileInfo, ConfigUtils.Tribes.MediaLibraryPath, ConfigUtils.Tribes.SiteName, 300, 200, 500); // <-- null occurs here 
} 

Я запутался, потому что в соответствии с Kentico методом документации GetImageThumbnail:

Возвращает изображение миниатюры с диска или создать новый, если не есть еще.

И я понятия не имею, почему миниатюра является нулевой. Он должен по крайней мере создать новый миниатюру. Должен ли я теперь использовать решение, предоставленное @ user6043336?

+0

Вы добавили поставщиков ролей в свой web.config? –

+0

Нет, я не добавил поставщиков ролей в web.config. Это необходимо? –

ответ

2

Имхо вы shouldn `создавать новые MediaFileInfo как

MediaFileInfo fileInfo = new MediaFileInfo(filePath, libraryInfo.LibraryID, libraryInfo.LibraryFolder); // <-- exception occurs here 

но вы должны попытаться получить информацию из средств массовой информации дб или фс (в зависимости от вашей настройки). Попробуйте использовать

GetMediaFileInfo(int mediaLibraryId, string mediaFilePath) 

из MediaFileInfoProvider класса.

объявление.UPDATE 2:

Я проверил внутреннюю реализацию на исходном коде и возвращает null только в том случае, если файл fileInfo равен null или если объект на filePath не существует. Пожалуйста, проверьте его дважды.

0

Какая часть кода (веб-часть, модуль, событие и т. Д.)?

В любом случае, вы должны позвонить по методу SetMediaFileInfo, прежде чем вы получите миниатюру. Ниже приведен весь код пример создания медиа-файла в Kentico 8.2:

private bool CreateMediaFile() 
{ 
    // Prepare the parameters 
    string filePath = "~/CMSAPIExamples/Code/Tools/MediaLibrary/Files/Powered_by_kentico2.gif"; 

    // Get media library 
    MediaLibraryInfo library = MediaLibraryInfoProvider.GetMediaLibraryInfo("MyNewLibrary", SiteContext.CurrentSiteName); 
    if (library != null) 
    { 
     // Create new media file object 
     MediaFileInfo mediaFile = new MediaFileInfo(Server.MapPath(filePath), library.LibraryID); 

     // Create file info 
     FileInfo file = FileInfo.New(Server.MapPath(filePath)); 
     if (file != null) 
     { 
      // Set the properties 
      mediaFile.FileName = "MyNewFile"; 
      mediaFile.FileTitle = "My new file title"; 
      mediaFile.FileDescription = "My new file description."; 
      mediaFile.FilePath = "MyNewFolder/MyNewFile.gif"; 
      mediaFile.FileExtension = file.Extension; 
      mediaFile.FileMimeType = "image/gif"; 
      mediaFile.FileSiteID = SiteContext.CurrentSiteID; 
      mediaFile.FileLibraryID = library.LibraryID; 
      mediaFile.FileSize = file.Length; 

      // Create the media file 
      MediaFileInfoProvider.SetMediaFileInfo(mediaFile); 

      return true; 
     } 
    } 

    return false; 
} 
+0

спасибо за ответ, см. Мой UPDATE 1. –

 Смежные вопросы

  • Нет связанных вопросов^_^