小编Mil*_*adi的帖子

C# 12 中主构造函数的 Null 检查

我使用 C# 12。在 C# 12 中我可以使用主构造函数:

public class UserService(IUnitOfWork uow) : IUserService
{
}
Run Code Online (Sandbox Code Playgroud)

在 C# 12 之前,我对构造函数中注入的项使用 null 检查:

public class UserService : IUserService
{
    private readonly IUnitOfWork _uow;

    public UserService(IUnitOfWork uow)
    {
        ArgumentNullException.ThrowIfNull(uow);
        _uow = uow;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我如何在 C# 12 中进行 null 检查?
是否需要对主构造函数使用快速失败?

c# fail-fast primary-constructor .net-8.0 c#-12.0

19
推荐指数
1
解决办法
1919
查看次数

如何访问.NET 5类库中的IWebHostEnvironment?

我正在使用 ASP.NET Core 5,
我想IWebHostEnvironment在 classlib 中访问,但是当我尝试Microsoft.AspNetCore.App在 nuget 中安装时,我收到此警告:
A PackageReference to Microsoft.AspNetCore.App is not necessary when targeting .NET Core 3.0 or higher 如何IWebHostEnvironment在 .NET 5 classlib 中访问?

c# asp.net-core

10
推荐指数
1
解决办法
4115
查看次数

.NET 8 中的 JwtSecurityToken

我使用 JWT 进行项目身份验证。

我使用 .NET 7,此处显示的代码对我来说可以正常工作。

此代码用于检查数据库中是否存在令牌:

if (!(context.SecurityToken is JwtSecurityToken accessToken) ||
    string.IsNullOrWhiteSpace(accessToken.RawData) ||
    !await tokenStoreService.IsValidTokenAsync(accessToken.RawData, userId))
{
    context.Fail("This token is not in our database.");
    return;
}
Run Code Online (Sandbox Code Playgroud)

但是当我将 .NET 版本升级到 8 时,现在这段代码不再起作用。

我搜索了一下,发现这篇文章,我不知道它是否与我的问题相关。

jwt .net-8.0

4
推荐指数
1
解决办法
4747
查看次数

在lock语句中使用async

我使用 ASP.NET Core Identity,通过 Jmeter 应用程序,我向我的 Web 应用程序发送多个请求以创建用户,它使用同一电子邮件创建了多个用户,尽管我的RequireUniqueEmailtrue

services.AddIdentity<User, Role>(identityOptions =>
{
    identityOptions.User.RequireUniqueEmail = true;
});
Run Code Online (Sandbox Code Playgroud)

当我一一发送请求时,一切正常,并在这段代码中给我重复的电子邮件错误

var result = await _userManager.CreateAsync(userToCreate, userPassword);
Run Code Online (Sandbox Code Playgroud)

但是当我使用 Jmeter 发送多个请求时,上面的代码无法处理重复的电子邮件,并且在 Jmeter 请求完成后,我打开 SQL Server,我看到至少创建了 10 条具有相同电子邮件的记录。我搜索了这个问题并得到了这个解决方案Using lock

private static readonly object lockObj = new object();
lock(lockObj)
{
    var result = await _userManager.CreateAsync(userToCreate, userPassword);
}
Run Code Online (Sandbox Code Playgroud)

但它给了我错误并说“你不能在锁定语句中使用await”,第二个问题是ASP.NET Core Identity没有用于创建的Sync方法。如何在 ASP.NET Core Identity 中创建 create 的同步方法?

c# multithreading thread-synchronization async-await asp.net-core

2
推荐指数
2
解决办法
429
查看次数

如何在视觉中通过Nuget安装预览版或RC包?

我正在使用 NET6 RC。如何在 Visual Studio 2022 预览版的 Nuget 窗口中安装 RC 或预览包?因为目前 Visual Studio 2022 预览中的 Nuget 窗口仅向我显示软件包的稳定版本。例如 :

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0-rc.2.21480.5" />
Run Code Online (Sandbox Code Playgroud)

nuget .net-6.0 visual-studio-2022

1
推荐指数
1
解决办法
598
查看次数