c# - “ArgumentNullException:值不能为空。Arg_ParamName_Name”在 ASP.NET Core 中无处不在
问题描述
我正在为我正在创建的 Angular 应用程序开发一个 Swagger API,它充当 Riot API 的代理。我上周最后一次工作,没有任何问题。然而,现在我的数据初始化程序在尝试启动它时抛出了一个空异常。
首先,我重新启动了 Visual Studio,然后以管理员权限重新启动,最后重新启动了笔记本电脑,没有骰子。然后检查是否是我所做的某个更改,回滚到几周前的随机提交。同样的例外。
所以,这个异常似乎不知从何而来。直到今天才看到它发生,我无法让它消失。
数据初始化器(违规行在底部标有注释):
public class SummonerDataInitializer
{
private readonly SummonerContext context;
private readonly UserManager<User> userManager;
private readonly SummonerRepository summonerRepository;
public SummonerDataInitializer(SummonerContext context, UserManager<User> userManager, SummonerRepository summonerRepository)
{
this.context = context;
this.userManager = userManager;
this.summonerRepository = summonerRepository;
}
public async Task InitializeData()
{
await context.Database.EnsureDeletedAsync();
if (await context.Database.EnsureCreatedAsync())
{
var dashboard = new Dashboard
{
PinnedSummoners = new List<Summoner>
{
await summonerRepository.GetBy("euw", "Jhinstachio"),
await summonerRepository.GetBy("euw", "DracoZar"),
await summonerRepository.GetBy("euw", "TrueMrCrazy"),
await summonerRepository.GetBy("euw", "God of Lunar")
},
LiveGameItems = new List<LiveGameItem>
{
new LiveGameItem
{
Region = "euw",
SummonerName = "Don Arts",
},
new LiveGameItem
{
Region = "euw",
SummonerName = "3250",
},
new LiveGameItem
{
Region = "euw",
SummonerName = "Cboi1",
},
}
};
var user = new User("admin", "admin@admin.com") { EmailConfirmed = true };
await userManager.CreateAsync(user, "P@ssword1");
await userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, "admin"));
user = await context.Users.SingleAsync(u => u.Email == user.Email);
user.Dashboard = dashboard; // Removing this line fixes the exception
context.Users.Update(user);
await context.SaveChangesAsync();
}
}
}
老实说,我不明白代码在这里是如何受到指责的。当然,它写得不是很好,而且 Wait() 很臭,但是一切正常,直到它决定不这样做。据我所见,在线类似的例外情况与这种情况无关。
编辑:忘了提,我还徒劳地更新了 Visual Studio 和所有 NuGet 包。
解决方案
经过更多调试后,发现其中一个 PinnedSummoners 项目返回 null,从而导致了问题。根本原因是其中一位召唤师更改了他们的名字,而我未能检查空值。让我失望的是模棱两可的异常消息。
推荐阅读
- javascript - 如果我的班级的任何实例被点击隐藏元素(纯JS)
- rdbms - 3NF 中的规范化是否适用于由多个候选键组成的模式?
- javascript - React Native 无法读取路径 @babel\core\node_modules\json5\.bin\json5
- embedded - 通过 NodeMCU 将 MPU6050 传感器数据传送到 Arduino IDE
- cassandra - 如何在 DSE 图中设置聚类键的排序顺序?
- django - 在 django 中获取反向外键的反向外键,同时仍然利用 prefetch_related
- amazon-web-services - 具有自定义授权和 Rest API 的 AWS 无服务器模板配置
- jena - 创建可扩展的知识图谱
- c# - C# 设置对 REST API 的访问
- angular - 当我在 ionic 中发布数据时,我得到了奇怪的反应