相关疑难解决方法(0)

ASP.NET Core Web API从静态类登录

我在我的控制器上使用依赖注入正好记录,现在我需要静态类中记录一些东西.

如何静态类登录?

我不能使用依赖注入,因为它是静态的,我不能只将现有的logger对象传递给静态类,因为它在日志文件中会有错误的类名.

换句话说,如何从静态类中的loggerfactory中获取记录器?

我遇到了一个类似的问题,他们指出了一篇关于静态类中loggerfactory的文章,但实际上并没有工作,因为我无法从中获取新的记录器,因为它不会接受静态类作为参数:

"静态类型不能用作类型参数"

logging dependency-injection static-classes asp.net-core asp.net-core-webapi

15
推荐指数
3
解决办法
8726
查看次数

如何在ASP.NET Core中使用IAsyncAuthorizationFilter获取依赖项注入

我已经实现了IAsyncAuthorizationFilter一个类的接口;此外,该类是从派生的Attribute,因此我可以使用它来标记控制器类和操作方法。到目前为止,该方法有效;该Task OnAuthorizationAsync(AuthorizationFilterContext context)方法在action方法之前被调用,如果请求未通过身份验证,HTTP 401则为响应返回。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class CustomAuthenticationAttribute : Attribute, IAsyncAuthorizationFilter 
{
    public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

该属性的用法如下...

[CustomAuthenticationAttribute]
public class SomeDataController : Controller
{
    [HttpGet]
    public async Task GetData()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想使用应用程序服务(该服务从数据库中获取身份验证所需的秘密私钥信息),并尝试为此使用属性注入。通过ctor注入依赖不是一个好的选择,因为它是作为属性实现的。所以我尝试了...

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class CustomAuthenticationAttribute : Attribute, IAsyncAuthorizationFilter 
{
    public IPrivateKeyLookupService KeyService { get; set; }

    public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
    {
        string publicKey = ...
        ...
        var …
Run Code Online (Sandbox Code Playgroud)

c# autofac .net-core asp.net-core

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