1

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 ID のユーザー名と一致する場合にのみサポートされます。

リモート サーバー 'A' のコンテンツ プラットフォームとして Kentico を使用しており、ローカルホストから MVC アプリケーションのサムネイルを取得したいと考えています。

なぜこの例外が発生し、何が間違っているのでしょうか?

提案をありがとう!

更新 1:

MediaFileInfo オブジェクトは、localhost のディレクトリを検索しますが、リモート サーバーのパスは検索しないため、これが主な問題であると考えられます。

私のアプリケーションは、他のドメイン (サーバー) から画像のサムネイルを取得する必要がある別の MVC Web サイトです。

更新 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 によると、私は混乱しています。

ディスクから画像のサムネイルを返すか、まだ存在しない場合は新しいサムネイルを作成します。

そして、サムネイルがnullである理由がわかりません。少なくとも新しいサムネイルを作成する必要があります。@ user6043336 が提供するソリューションを使用する必要がありますか?

4

2 に答える 2

2

私見のように新しい MediaFileInfo を作成するべきではありません

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

ただし、代わりに db または fs (設定に応じて) からメディア情報を取得するようにしてください。使ってみて

GetMediaFileInfo(int mediaLibraryId, string mediaFilePath) 

MediaFileInfoProviderクラスから。

広告。更新 2:

ソース コードの内部実装を確認したところ、 fileInfo が null の場合、または filePath のオブジェクトが存在しない場合にのみnull が返されます。再確認してください。

于 2016-04-20T08:05:35.603 に答える