C# 图像的奇异性。FromStream“;“参数无效”;

C# 图像的奇异性。FromStream“;“参数无效”;,c#,system.drawing,C#,System.drawing,我有过几次同样的问题,但我忽略了它,我想我试图加载的图像可能是某种程度上被破坏了。这次我想探索更多 所以,我想到的第一件事是,我使用C#WebClient从网络上获取图像的方式可能有问题。经过一点跟踪和错误并调整代理后,我已成功加载带有以下内容的图像: Image.FromStream(ms); “那么…”我在想“形象毕竟不是问题…” 接下来我决定做一件简单的事情,我用 File.WriteAllBytes("C:\\1\\bytes01.txt", imgData); 我已将图像保存到

我有过几次同样的问题,但我忽略了它,我想我试图加载的图像可能是某种程度上被破坏了。这次我想探索更多

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

 Image.FromStream(ms);
“那么…”我在想“形象毕竟不是问题…” 接下来我决定做一件简单的事情,我用

 File.WriteAllBytes("C:\\1\\bytes01.txt", imgData);
我已将图像保存到磁盘中。 接下来,我在Web应用程序中做了同样的事情,希望得到不同的结果

但文件是一样的

现在我很困惑,好吧,也许Web应用程序有问题

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

好的,接下来我想可能是系统。绘制dll可能是错误的程序集。。。但大会的决议也是一样的:

System.Reflection.Assembly.GetAssembly(类型(位图))
{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应用程序中,一切正常工作,在该代码位于引用DLL中的Web应用程序中,代码不工作

只是要提到这是一个完全随机的图像从网上,但我张贴这一个,因为我已经经历了这个问题与这张图片

这三种处理器的构建模式都是任意CPU

有没有人知道发生了什么,为什么这在一种情况下有效而在另一种情况下无效

更新01:

当Web应用程序在IIS GDI+下运行且具有特定映像时,总是失败。为什么?(注意:读取文件不是问题,它必须是在GDIPlus.dll上具有IIS权限的文件…如何允许此操作?)

更新02:

我成功了。我通过将应用程序池>流程模型>标识>应用程序池标识更改为网络服务来实现这一点。 但这并没有改变这样一个事实,即应用程序抛出的异常并没有任何意义,我不想开始谈论我已经损失了多少时间。。。如此误导。。。 我敢打赌,同样的问题会让其他人认为流或图像格式有问题,或者谁知道呢。。。不管怎样,呼呼