System.Drawing命名空间不能在Web Service中使用

时间:2012-12-06 21:16:43

标签: asp.net web-services system.drawing

我已经整理了一个c#控制台应用程序,它运行一个打算下载简单pdf文档的Web服务。我可以返回该对象但是我似乎无法弄清楚如何将pdf对象保存到文件中。

ServiceName.ImageResponse responseObject = Response.GetDocument(12345);
MemoryStream ms = new MemoryStream(responseObject.Document);
//System.Drawing is the problem (namespace can't be used in a Web Service)
System.Drawing.Image Img = System.Drawing.Image.FromStream(ms);
Img.Save("c:\\saved.JPG");

这不是编译,因为我收到(System.Drawing下的红色线条)并出现以下错误:

错误1类型或命名空间名称'绘图'命名空间中不存在'系统' (你错过了一个程序集引用吗?)

http://msdn.microsoft.com/en-us/library/system.drawing.aspx声明如下:

警告说明注意事项 System.Drawing命名空间中的类不支持在Windows或ASP.NET服务中使用。尝试在其中一种应用程序类型中使用这些类可能会产生意外问题,例如服务性能下降和运行时异常。有关支持的替代方法,请参阅Windows Imaging Components。

我只想知道是否还有其他办法。我似乎无法弄明白。

1 个答案:

答案 0 :(得分:0)

投石机可能是正确的。检查以确保您实际上已完成添加对所需dll的引用的工作。命名空间与.dll文件没有1对1的对应关系,因为它的价值。

至于此:

  

不支持使用System.Drawing命名空间中的类   在Windows或ASP.NET服务中。试图使用这些类   从这些应用程序类型中的一个可能产生意外   问题,例如服务性能和运行时间的减少   例外。有关支持的替代方法,请参阅Windows Imaging   组件。

我不确定,但我的猜测是System.Drawing命名空间中的几个组件希望进程能够访问window station,桌面等等,这就是你的位置会看到运行时异常。我会采取一个平底船,看看它是否有效(一旦你修复了编译错误)。他们在这里真正说的是“如果打破了就不要打电话给我们”:)