Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析OWIN回调委托内部_C#_Dependency Injection_Autofac - Fatal编程技术网

C# 解析OWIN回调委托内部

C# 解析OWIN回调委托内部,c#,dependency-injection,autofac,C#,Dependency Injection,Autofac,解析OWIN回调委托中的对象的正确方法是什么 假设AutofacConfig.AutofacContainer是一个IContainer,并且IServiceManager已注册为InstancePerRequest: app.UseCookieAuthentication(new CookieAuthenticationOptions { Provider = new CookieAuthenticationProvider { OnResponseSignIn

解析OWIN回调委托中的对象的正确方法是什么

假设
AutofacConfig.AutofacContainer
是一个
IContainer
,并且
IServiceManager
已注册为
InstancePerRequest

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    Provider = new CookieAuthenticationProvider
    {
        OnResponseSignIn = cookieSignInCtx =>
        {
            // this?
            using (var scope = AutofacConfig.AutofacContainer.BeginLifetimeScope("AutofacWebRequest"))
            {
                var serviceManager = scope.Resolve<IServiceManager>();
            }

            // or this?
            var serviceManager = DependencyResolver.Current.GetService<IServiceManager>();

            // or something else?
        }
    }
});
app.UseCookieAuthentication(新的CookieAuthenticationOptions
{
Provider=新CookieAuthenticationProvider
{
OnResponseSignIn=cookieSignInCtx=>
{
//这个?
使用(var scope=AutofacConfig.AutofacContainer.BeginLifetimeScope(“AutofacWebRequest”))
{
var serviceManager=scope.Resolve();
}
//还是这个?
var serviceManager=DependencyResolver.Current.GetService();
//还是别的什么?
}
}
});

我们不是为您解决问题,而是解决了IOAuthorizationServerProvider提供程序。类似的(如果不是相同的)想法;)

常量字符串publicClientId=“self”; var prod=container.Resolve(新名称参数(“publicClientId”,publicClientId)); var oAuthOptions=新的OAuthorizationServerOptions { TokenEndpointPath=新路径字符串(“/Token”), Provider=prod, AuthorizeEndpointPath=新路径字符串(“/api/Account/ExternalLogin”), AccessTokenExpireTimeSpan=TimeSpan.FromDays(14), AllowInsecureHttp=true }; 提供商的注册方式如下:

containerBuilder.RegisterInstance(new IdentityFactoryOptions<ApplicationUserManager>
{
    DataProtectionProvider = new DpapiDataProtectionProvider("MyWebAPI")
});
containerBuilder.RegisterInstance(新标识工厂选项
{
DataProtectionProvider=新的DpapiDataProtectionProvider(“MyWebAPI”)
});
containerBuilder.RegisterInstance(new IdentityFactoryOptions<ApplicationUserManager>
{
    DataProtectionProvider = new DpapiDataProtectionProvider("MyWebAPI")
});