Azure Function 给出错误:此平台不支持 System.Drawing

2024-02-17

(如果这个问题措辞不好,有人可以帮我解决吗?)

我有一个 Azure Function (2.0),它依赖于一些 System.Drawing 代码。我添加了对 System.Drawing.Common (4.5.0) 的 NuGet 引用。

然而,发布应用程序后,调用该函数时,会产生错误:

System.Private.CoreLib:执行函数时出现异常: [我的函数名称]。 System.Drawing.Common:System.Drawing不是 在此平台上支持。

据我所知,.NET Core 现在支持 System.Drawing.Common,我相信这是我的 Azure Function 运行的环境。不过,实际项目是 .NET Standard 2.0 项目。

我对如何解决这个问题感到困惑。我尝试将项目转换为 .NET Core 2.1 项目,但这导致了与“元数据生成失败”相关的奇怪错误以及无法找到 System.Runtime。

我的项目引用了 Microsoft.Azure.WebJobs.Extensions.EventGrid (2.0.0-beta2)(如果相关)。


这与 CLR 无关,而与sandbox https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#win32ksys-user32gdi32-restrictions.

System.Drawing 严重依赖 GDI/GDI+ 来完成其工作。由于这些 API 具有一定的风险性(攻击面较大),因此它们被限制在应用服务沙箱中。

Win32k.sys(User32/GDI32)限制

为了彻底减少攻击面,沙箱阻止了几乎所有 Win32k.sys API 的调用,这实际上意味着大多数 User32/GDI32 系统调用都被阻止。对于大多数应用程序来说,这不是问题,因为大多数 Azure Web 应用程序不需要访问 Windows UI 功能(它们毕竟是 Web 应用程序)。

尝试找到一个不依赖于 System.Drawing/GDI 的不同库,例如图像锐利 https://sixlabors.com/projects/imagesharp/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure Function 给出错误:此平台不支持 System.Drawing 的相关文章

随机推荐