Image.FromStream"参数无效"的奇怪之处

时间:2014-08-06 17:52:26

标签: c# system.drawing

我有几次同样的问题,但我忽略了它,我在想,我试图加载的图像可能已经被破坏了。这次我想探索更多。

所以,我想到的第一件事就是我用C#WebClient从网上获取图像的方式可能有问题。经过一些跟踪和错误并调整代理后,我成功加载了图像:

 Image.FromStream(ms);

,“那么......”我在想“毕竟图像不是问题......” 接下来我决定做一件简单的事情,我已经使用了

 File.WriteAllBytes("C:\\1\\bytes01.txt", imgData);

我已将图像保存到磁盘。 接下来,我在Web应用程序中做了同样的事情,期望得到不同的结果。

但文件完全相同?!

现在我很困惑,好吧也许是Web应用程序的东西?!

我创建了另一个测试Web应用程序,从那里一切都很好。 WTF?!

好吧接下来我虽然可能System.Drawing dll可能是错误的程序集......但程序集也是一样的:

System.Reflection.Assembly.GetAssembly(typeof运算(位图))
{System.Drawing,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a}

我接下来要做的就是使用.Net Reflector,确定问题的路线,但我有堆栈:

num = SafeNativeMethods.Gdip.GdipLoadImageFromStream(new GPStream(stream), out zero);

[DllImport("gdiplus.dll", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
internal static extern int GdipLoadImageFromStream(UnsafeNativeMethods.IStream stream, out IntPtr image);

在每个应用程序中都提到代码是相同的:

 var imgData = System.IO.File.ReadAllBytes("C:\\1\\bytes02.txt");
 var ms = new MemoryStream(imgData);
 ms.Write(imgData, 0, imgData.Length);
 ms.Seek(0, SeekOrigin.Begin);
 ms.Position = 0;

在控制台和测试Web应用程序中,一切正常,在此代码位于Referenced DLL中的Web应用程序中,代码不起作用。

只是提到这是一张来自网络的完全随机的图片,但我发布了这张图片,因为我在这张图片中遇到了这个问题。

http://vermin-explorers.co.uk/images/wetratflipped.gif

所有三种的构建模式都是任何CPU。

有没有人知道发生了什么事情,以及为什么这种情况在一个案例中起作用而不在另一个案件中呢?

更新01:

在具有特定图像的IIS GDI +下运行的Web应用程序始终失败。为什么? (注意:读取文件不是问题,它必须是GDIPlus.dll上的IIS权限...如何允许这个?)

更新02:

我成功了。我通过更改应用程序池>使其工作正常。过程模型>身份> ApplicationPoolIdentity进入网络服务。 但这并没有改变应用程序抛出的异常没有任何意义的事实,我不想开始我失去了多少时间......所以误导...... 我可以打赌,同样的问题让其他人认为Stream或Image格式出了问题,或者知道什么...... huuhhhh无论如何......

0 个答案:

没有答案
相关问题