2

我有一个工作的 WCF REST 服务 (.NET 4.0) 用于下游图像。但是,当此服务发布到 Azure 网站 (.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. 删除所有“使用”-> 无效(但可能存在内存泄漏)
  2. 将 MemoryStream 包装在 BufferedStream -> 不
  3. 删除 Seek() -> 没有图像(如预期的那样)

我做错了什么?它适用于不同的项目(虽然不是 Azure)。.NET 4.0 与 4.5 的兼容性是罪魁祸首吗?

4

0 回答 0