ProviderException при создании объекта MediaFileInfo в Kentico

Я хочу получить миниатюру из файла в Kentico 8.2, поэтому я использую следующий метод:

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.

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

Почему возникает это исключение и что я делаю не так?

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

ОБНОВЛЕНИЕ 1:

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

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

ОБНОВЛЕНИЕ 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:

Возвращает эскиз изображения с диска или создает новый, если он еще не существует.

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


person Rafal Cypcer    schedule 20.04.2016    source источник
comment
Вы добавили каких-либо поставщиков ролей в свой web.config?   -  person Chetan Sharma    schedule 20.04.2016
comment
Нет, я не добавлял поставщиков ролей в web.config. Это необходимо?   -  person Rafal Cypcer    schedule 20.04.2016


Ответы (2)


Имхо, вы не должны создавать новый MediaFileInfo, например

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

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

GetMediaFileInfo(int mediaLibraryId, string mediaFilePath) 

из класса MediaFileInfoProvider.

объявление. ОБНОВЛЕНИЕ 2:

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

person Martin Makarsky    schedule 20.04.2016

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

В любом случае перед получением эскиза следует вызвать метод 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;
}
person JanH    schedule 20.04.2016