2

画像をダウンストリームするための WCF REST サービス (.NET 4.0) が動作しています。しかし、このサービスが Azure Web サイト (.NET 4.5) に公開されると、読み込まれた画像がランダムに破損します。これはローカルでは発生せず、ドメイン内でも発生しません。

Azure では一貫性がありません。読み込まれることもあれば、読み込まれないこともあります。ここで破損を確認できます。

http://telproabrdev.azurewebsites.net/logo/vyrobce/get?id=4bced4ee-7162-45a3-a495-7764305e2d56&format=PNG

これは私のコードです(基本的に):

契約:

[OperationContract]
[WebGet(UriTemplate = "get?id={id}&format={format}", 
    RequestFormat = WebMessageFormat.Xml, 
    ResponseFormat = WebMessageFormat.Xml, 
    BodyStyle = WebMessageBodyStyle.Bare)]
Stream GetImage(String id, String format);

実装:

public Stream GetImage(String id, String format)
{
   // stuff, stuff, stuff

   using (Stream original = GetImageStream())
   {
       Stream result = CreateThumbnailStream(original, width, height);
       result.Seek(0, SeekOrigin.Begin);
       return result;
   }
} 

private Stream GetImageStream() 
{
    Bitmap copy = new Bitmap(Resource.SomePicture);
    Stream result = new MemoryStream();
    image.Save(result, ImageFormat.Png);
    return result;
}

private Stream CreateThumbnailStream(Image image, Int32 width, Int32 height)
{
    Image image = Image.FromStream(stream);
    Image result = new Bitmap(width, height, PixelFormat.Format32bppArgb);

    // shrinking routine skipped for brevity

    return result;
}

これまでのところ、私はこれを試しました:

  1. すべての 'usings' を削除 -> 効果なし (ただし、メモリ リークの可能性あり)
  2. MemoryStream を BufferedStream にラップする -> いいえ
  3. Seek() の削除 -> 画像なし (予想どおり)

私は何を間違っていますか?さまざまなプロジェクトで機能しました (Azure ではありません)。.NET 4.0 と 4.5 の互換性が原因ですか?

4

0 に答える 0