public IActionResult FetchThumbnail(string thumbnailKey)
        {
            long       thumbnailId = 0L;
            IThumbnail thumbnail   = null;

            try {
                if (long.TryParse(thumbnailKey, out thumbnailId))
                {
                    thumbnail = thumbnailRepository.Load(thumbnailId);
                }
                else
                {
                    thumbnail = thumbnailRepository.FindByKey(thumbnailKey).FirstOrDefault();
                }
            } catch (Exception) {
                // サムネイルが正常に取得できない場合は、常にnullとする。
                thumbnail = null;
            }

            // リソースの有効期限等を決定する
            //DateTimeOffset now = DateTime.Now;
            //var etag = new EntityTagHeaderValue("\"" + Guid.NewGuid().ToString() + "\"");

            if (thumbnail == null)
            {
                System.Reflection.Assembly assm = System.Reflection.Assembly.GetExecutingAssembly();
                string filePath = string.Format("Foxpict.Service.Web.Assets.Icon.UI.Article3.png");
                return(new FileStreamResult(assm.GetManifestResourceStream(filePath), "image/png"));
            }

            return(new FileContentResult(thumbnail.BitmapBytes, thumbnail.MimeType));
        }
        public IActionResult FetchThumbnail(string thumbnailKey)
        {
            long       thumbnailId = 0L;
            IThumbnail thumbnail   = null;

            if (long.TryParse(thumbnailKey, out thumbnailId))
            {
                thumbnail = thumbnailRepository.Load(thumbnailId);
            }
            else
            {
                thumbnail = thumbnailRepository.FindByKey(thumbnailKey).FirstOrDefault();
            }
            if (thumbnail == null)
            {
                throw new ApplicationException(string.Format("サムネイル画像({0})が見つかりません", thumbnailKey));
            }

            // リソースの有効期限等を決定する
            //DateTimeOffset now = DateTime.Now;
            //var etag = new EntityTagHeaderValue("\"" + Guid.NewGuid().ToString() + "\"");

            return(new FileContentResult(thumbnail.BitmapBytes, thumbnail.MimeType));
        }
            /// <summary>
            /// サムネイルを生成します
            /// </summary>
            public void Do()
            {
                try
                {
                    using (MemoryStream memoryStream = new MemoryStream())
                    {
                        this._ImageSource.SaveAsPng(memoryStream);
                        string mimeType = "image/png";

                        if (string.IsNullOrEmpty(_rebuildThumbnailKey))
                        {
                            string key = null;
                            while (key == null)
                            {
                                var tal = RandomAlphameric.RandomAlphanumeric(20);
                                var r   = _thumbnailRepository.FindByKey(tal);
                                if (r.Count() == 0)
                                {
                                    key = tal;
                                }
                                foreach (var p in r)
                                {
                                    if (p.ThumbnailType != _ThumbnailType)
                                    {
                                        key = tal;
                                    }
                                }
                            }

                            var thumbnail = _thumbnailRepository.New();
                            thumbnail.ThumbnailKey  = key;
                            thumbnail.ThumbnailType = _ThumbnailType;
                            thumbnail.MimeType      = mimeType;
                            thumbnail.BitmapBytes   = memoryStream.ToArray();

                            _ThumbnailKey = key;
                        }
                        else
                        {
                            var thumbnailQue = _thumbnailRepository.FindByKey(_rebuildThumbnailKey);

                            // サムネイルタイプのエンティティが存在する場合、trueをセットする。
                            bool isThumbnailSave = false;
                            foreach (var prop in thumbnailQue)
                            {
                                if (prop.ThumbnailType == _ThumbnailType)
                                {
                                    prop.BitmapBytes = memoryStream.ToArray();
                                    isThumbnailSave  = true;
                                }
                            }

                            if (!isThumbnailSave)
                            {
                                // 指定したサムネイルタイプのエンティティを、
                                // 新規作成する。
                                var thumbnail_NewThumbnailType = _thumbnailRepository.New();
                                thumbnail_NewThumbnailType.ThumbnailKey  = _rebuildThumbnailKey;
                                thumbnail_NewThumbnailType.ThumbnailType = _ThumbnailType;
                                thumbnail_NewThumbnailType.BitmapBytes   = memoryStream.ToArray();
                                _ThumbnailKey = _rebuildThumbnailKey;
                            }
                            else
                            {
                                _ThumbnailKey = _rebuildThumbnailKey;
                            }
                        }
                    }
                }
                catch (NotSupportedException expr)
                {
                    _logger.Warn(expr.Message);
                }
            }