相关疑难解决方法(0)

VS2019 中 ASP.NET Core 2.2 项目中的分析器警告

我有一个基本上是从默认 Razor Pages 模板创建的默认 ASP.NET Core 2.2 项目。

现在,在解决方案资源管理器 -> 依赖项中有一个名为“分析器”的节点。

首先,一开始我不知道它是做什么用的。我想我现在知道了,但它仍然有点模糊。

其次,为什么它有一个警告图标?与其子节点相同。

注意:我不在“NuGet”节点下,所以这不是关于缺少依赖项或类似问题的问题。

第三;如果这个“功能”只是为了迷惑我,为什么会在那里?!

在此处输入图片说明

visual-studio asp.net-core visual-studio-2019

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

如何从ISecurityTokenValidator正确获取依赖范围的服务

在我的asp.net core 2.0网络应用程序中,我有一个ISecurityTokenValidator用于验证令牌的自定义。

它依赖于存储库来执行db查找-存储库本身被设置为作用域依赖项:

services.AddScoped<IMyRepository>(MyRepository);
Run Code Online (Sandbox Code Playgroud)

现在,由于ISecurityTokenValidator的设置方式而变得有趣。

它添加在ConfigureServices

.AddJwtBearer(options =>
    {
        options.SecurityTokenValidators.Clear();
        options.SecurityTokenValidators.Add(new MyTokenValidator(services.BuildServiceProvider()));
    })
Run Code Online (Sandbox Code Playgroud)

它是这样的:

public class MyTokenValidator : ISecurityTokenValidator
{
    private readonly IServiceProvider _serviceProvider;

    public MyTokenValidator(IServiceProvider serviceProvider)
    {
        _serviceProvider = serviceProvider;
    }

    public bool CanReadToken(string securityToken) => true;

    public ClaimsPrincipal ValidateToken(string securityToken, TokenValidationParameters validationParameters,
        out SecurityToken validatedToken)
    {

        var serviceScopeFactory = _serviceProvider.GetRequiredService<IServiceScopeFactory>();

        using (var scope = serviceScopeFactory.CreateScope())
        {
            var myRepository = scope.ServiceProvider.GetService<IMyRepository>();
            var principalFactory = scope.ServiceProvider.GetService<IUserClaimsPrincipalFactory<User>>();

            // Use the repo....

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

现在,由于IsecurityTokenProvider …

asp.net-core

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