UWP 和 Microsoft.AspNetCore.SignalR.Client Release 配置问题

Posted

技术标签:

【中文标题】UWP 和 Microsoft.AspNetCore.SignalR.Client Release 配置问题【英文标题】:UWP and Microsoft.AspNetCore.SignalR.Client Release configuration problem 【发布时间】:2020-03-10 10:19:04 【问题描述】:

我使用 UWP 应用程序作为客户端应用程序,它通过 SignalR 与服务器通信。

在我将 Microsoft.AspNetCore.SignalR.Client 3.0.3 升级到 3.1.2 版本后,UWP 应用程序中的通信停止工作。奇怪的是,通信在调试模式下工作,但在发行版中它无法向服务器发送消息,甚至无法从服务器接收消息。

我在尝试发送消息时得到的日志文件中的唯一消息是:

System.Reflection.MissingMetadataException:无法执行此操作,因为出于性能原因已删除以下对象的元数据:\n\n EETypeRva:0x00135980\n\n没有更多信息可用。在调试模式下重建以获得更好的信息。

我找到了一些解决此错误的方法,但没有任何帮助。

在接收消息时出现异常:

抛出异常:System.Private.Reflection.Core.dll 中的“System.Reflection.MissingMetadataException”

抛出异常:Microsoft.AspNetCore.SignalR.Protocols.Json.dll 中的“System.IO.InvalidDataException”

当时似乎 SignalR 确实断开了服务器并再次连接。

侦听相同消息的其他客户端(如 Web 应用程序)运行良好。

我是否需要为发布模式进行一些额外的设置或问题正在更新?

注意:在 Microsoft.AspNetCore.SignalR.Client 3.0.3 中一切正常,代码相同。

【问题讨论】:

您好,您的连接网址是https吗?切换到http 有效吗?我找到了一个similar question 可能对你有帮助。不过,目前还没有明确的结论。如果没有必要,可以暂时回退到 3.0.3 版本。 嗨,连接的 URL 是 http,是的,我已经把它放回 3.0.3,因为我还没有找到解决方案。但是,如果我找到解决方案,我会在这里发布,谢谢您的回答。 【参考方案1】:

.NET Native 运行时正在优化发布配置。要找出编译器应该保留的成员,请转到项目属性 > 构建 > 启用 .NET Native。对于 SignalR,尝试将其添加到您的 Properties\Default.rd.xml 文件中:

<Type Name="System.Text.Json.Serialization.Converters.JsonConverterString" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterUri" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterBoolean" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterInt32" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterDouble" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterInt16" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterByte" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterDecimal" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterGuid" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterEnum" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterDateTime" Dynamic="Required All" />
<Type Name="System.Text.Json.Serialization.Converters.JsonConverterDateTimeOffset" Dynamic="Required All" />

【讨论】:

以上是关于UWP 和 Microsoft.AspNetCore.SignalR.Client Release 配置问题的主要内容,如果未能解决你的问题,请参考以下文章

UWP 和 WPF 对比

[UWP]涨姿势UWP源码——IsolatedStorage

[UWP]涨姿势UWP源码——RSS feed的获取和解析

WCF、EF 和 UWP

在UWP中,我们可以使用动态编译和使用C#Reflection的成员调用动态编译和调用UWP中的新页面吗?

如何在xamarin PCL中区分winphone和UWP