我被告知使用ASP.NET中的GDI +是危险且未定义的。
是否因为无法保证设备上下文?有人可以解释一下吗?
有哪些替代方案?
以下是MSDN来源:
http://msdn.microsoft.com/en-us/library/system.drawing.aspx
修改的
Windows和ASP.NET 服务!那么也许正常的ASP.NET应用程序可以吗?但为什么呢?
修改的
这是不是愚人节的笑话,请不要这样对待。
答案 0 :(得分:4)
主题上有numerous articles,可以从.NET调用此代码。您需要确保处置您创建的任何对象,因此使用C#使用语句非常重要。
System.Drawing可能存在问题的原因是它与Windows的绘制方式密切相关。您应该尽可能地隔离代码。在Windows Vista及更高版本中,Microsoft对服务体系结构进行了一些更改,从而阻止了桌面和Windows服务之间的交互。 ASP.NET在技术上是一种服务,如果它托管在IIS(最常见的情况),所以这就是微软添加注释的原因。未来版本的Windows和IIS可能会使从ASP.NET应用程序中使用System.Drawing变得更加困难或不可能。
挑战在于,有些人可能在其他项目上滥用了这项技术,现在这些人正试图影响你对它的使用。处理这些问题的一种方法(无效或不是视情况而定)是创建一些性能和可靠性指标。然后当你开始使用GDI +演示它的使用效果时。在大多数情况下,这种影响应该是可以接受的,但这取决于你想用GDI +做什么。
答案 1 :(得分:2)
GDI +在Web环境中使用的窗口句柄和资源的创建存在可伸缩性问题。
将ASP.NET GDI +代码放在单例中,以便对调用进行序列化并正确处理对象。
我已经将这种技术用于动态创建的图像而没有任何障碍。