Asp.net mvc 3 找到空引用或无效值[GDI+;状态:InvalidParameter]

Asp.net mvc 3 找到空引用或无效值[GDI+;状态:InvalidParameter],asp.net-mvc-3,mono,gdi+,Asp.net Mvc 3,Mono,Gdi+,我在Mono/linux上运行一个MVC3应用程序,除了一个图像上传实用程序外,一切都正常。每当尝试上载图像时,我都会从以下方法中获得无效参数错误: System.Drawing.GDIPlus.CheckStatus(status As Status) (unknown file): N 00339 System.Drawing.Bitmap.SetResolution(xDpi As Single, yDpi As Single) 我在谷歌上搜索了这个错误,发现无效参数错误

我在Mono/linux上运行一个MVC3应用程序,除了一个图像上传实用程序外,一切都正常。每当尝试上载图像时,我都会从以下方法中获得无效参数错误:

    System.Drawing.GDIPlus.CheckStatus(status As Status) (unknown file): N 00339
    System.Drawing.Bitmap.SetResolution(xDpi As Single, yDpi As Single)
我在谷歌上搜索了这个错误,发现无效参数错误经常会产生误导,如果上传本身有错误,或者图像没有完全读取,就会引发错误。这在IIS/Windows上运行良好,但我无法在Mono中运行

Apache2 Mono 2.10.8.1


我是否遗漏了一些简单的东西,或者我是否需要找到一种不同的方法来处理mono的图像处理

在做了大量测试之后,我能够确定错误的根源。我试图使用位图的图像.HorizontalResolution图像.VerticalResolution属性。虽然这些属性是在初始上载时设置的(文件从tmp目录读入流),但当我使用图像本身的base64编码字符串发回时,这些值似乎不知何故丢失了。因此,SetResolution方法失败


无论出于何种原因,我在IIS/Windows上没有此问题,这两种情况下都存在属性

我遇到了类似的问题。从磁盘加载的位图,报告bmp.HorizontalResolution==0和bmp.VerticalResolution==0,当两者都==300时。Windows上不会出现这种行为

进一步挖掘,我发现以下测试失败:

    [Test]
    public void GDI_SetResoltion()
    {
        var b1 = new Bitmap (100, 100);
        Assert.That (b1.HorizontalResolution, Is.Not.EqualTo (0));
        Assert.That (b1.VerticalResolution, Is.Not.EqualTo (0));
    }
我相信Windows将默认分辨率为96 dpi