Blazor服务器在Linux上的System.Drawing.ImageConverter..ctor()处抛出System.PlatformNotSupportedException:…异常

Blazor服务器在Linux上的System.Drawing.ImageConverter..ctor()处抛出System.PlatformNotSupportedException:…异常,blazor,blazor-server-side,Blazor,Blazor Server Side,对于我的Blazor服务器项目,在控制器中,如果不抛出System.PlatformNotSupportedException:System.Windows.Extensions类型,我无法将[FromBody]MyDTO用作参数。位于System.Drawing.ImageConverter..ctor() 它只在Linux上运行,而不在Windows上运行,而且我的DTO从不使用System.Drawing 我可以通过替换如下参数来解决此问题:[FromBody]JObject myDTO

对于我的Blazor服务器项目,在控制器中,如果不抛出System.PlatformNotSupportedException:System.Windows.Extensions类型,我无法将[FromBody]MyDTO用作参数。位于System.Drawing.ImageConverter..ctor()

它只在Linux上运行,而不在Windows上运行,而且我的DTO从不使用System.Drawing

我可以通过替换如下参数来解决此问题:[FromBody]JObject myDTO

但是我很想知道为什么我不能使用DTO类。 我的项目在某些部分使用System.Drawing.Common,但在DTO中不使用,毕竟它与JObject一起工作,然后将其转换为MyDTO,这是一个非常奇怪的问题


有人知道这里发生了什么吗?

系统。绘图API对Windows的依赖性非常强

在Linux上运行时获得此异常是正确的

真正的问题是,既然您用
[blazor]
标记了这个API,那么您为什么要依赖这个API呢。你不应该


您可以在System.Drawing.Common中选择一个选项,但无法确定。

您应该显示该DTO类。任何与系统.绘图相关的属性?我的DTO没有任何系统.绘图属性。我的实体有,但如果不将DTO映射到实体,则会发生异常。映射不是一个问题,因为当我使用JObject时它是有效的。此外,我的DTO位于共享项目(即.net标准2.1)中,您应该提供一个确实的,但我的DTO位于.net标准2.1项目中。Net标准2.1不保证跨平台兼容性吗?是否允许在其中执行特定于Windows的操作?是否添加了程序包?好的,所以我发现在我的属性中有一种类型具有系统。绘图。。。财产。感谢您的帮助@henk holterman,我仍然不清楚为什么共享项目(.Net Standard 2.1)允许使用一个特定于操作系统的库。回答您,我之所以使用System.Drawing是因为我将所有业务逻辑从旧的WinForms应用程序中移走。我认为.Net标准将帮助我做好跨平台准备。在某些情况下确实如此(例如PdfSharp到PdfSharpCore,甚至System.Drawing.Common),但它仍然允许一些特定的操作,如此处所示。只要您不发布更多详细信息,您就不会得到更好的答案。