c# - C# , Xamarin.Essentials 安全存储
问题描述
在查看了有关保存 JWT 令牌的选项后,我选择了 Xamarin.Essentials 安全存储。
问题是我的应用程序在尝试将令牌保存在存储中时总是中断并出现以下错误:
“已抛出 System.AggregateException”
详情如下:
“Xamarin.Essentials.NotImplementedInReferenceAssemblyException
此程序集的可移植版本中未实现此功能。您应该从您的主应用程序项目中引用 NuGet 包,以便引用特定于平台的实现。”
这显然意味着安装 nuget 包时出了点问题,所以我:
- 卸载并重新安装 xamarin.essentials 包。
- 将 .Netstandard 升级到 2.0,认为 1.6 不兼容。
- 检查是否在 csproj 文件中引用了包。
以此类推,什么都没有。
现在,我有一个带有以下代码行的 TokenStorageController:
public bool SaveToken(string token)
{
if(token != null)
{
Preferences.Set(key, token);
if(Preferences.ContainsKey(key))
{
return true;
}
}
return false;
}
从中调用控制器的 RestService 类如下所示:
//await SecureStorage.SetAsync("oauth_token", "booommmmmm"); // changed to this simply to check if my controller was the problem
TokenStorageController tokenStorage = new TokenStorageController();
await tokenStorage.SaveToken("boommmmm"); // where I get an error
这是发生错误的确切行:
var loginTask = Task.Run(() => restService.LoginAsync(user)).Result;
如果没有解决方案,我将删除所有软件包并重新安装它们。逐个!我发誓我会做到的!如果根本没有解决方案,我会将令牌存储在 SQL 中,因为我已经有一个控制器来执行此操作。
我是 Xamarin 和 C# 菜鸟,所以请多多包涵。
仅供参考:我使用 macOS 客户端进行测试,原因可能是 SecureStorage 不适用于 macOS 应用程序。
谢谢!
解决方案
Xamarin.Mac
is not currently a supported platform, just iOS, Android, UWP.
The code is available for review at:
推荐阅读
- angular - Angular ngrx mouseenter 和表格
- c# - 我的网格布局格式有什么问题?
- r - 从合并的不规则时间序列生成一个时间序列
- c++11 - 如何将 auto 与大括号初始化混合以正确返回 std::pair?
- swapfile - 如何在 GCE 上的 Google 容器优化操作系统上启用交换/交换文件?
- python - 提取标签后如何编辑标签内的内容?
- r - 在闪亮的仪表板中根据条件显示两个动态绘图和高图表
- java - maven 中 npm install 的等价物是什么
- java - 字符不是来自英文字母时的Datadog字符串编码
- python - Python:列表中的重复项