OWINとAutoFacをIoCコンテナとして使用すると、依存状態注入を使用してセッション状態記憶メカニズムにHttpContextを注入しようとしていますが、HttpContext.Sessionはnullです。また、それが重要かどうかは分かりませんが、HttpContextWrapper(HttpContext.Current)を注入しようとしているクラスは、nugetパッケージとしてビルドした外部DLLです。依存性注入を使用すると、HttpContextセッションがnullです
Autofac登録は、私のAutofacモジュール
public static void Register(IAppBuilder app)
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterModelBinderProvider();
builder.RegisterFilterProvider();
builder.RegisterModule(new GatewayModule());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
app.UseAutofacMiddleware(container);
}
そしてautofacモジュールのコードレジスタ:私は私のSessionStateTokenStoreに見たときに
public class GatewayModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<SessionStateTokenStore>()
.WithParameter(new TypedParameter(typeof(HttpContextBase), new HttpContextWrapper(HttpContext.Current)))
.As<ITokenStore>().InstancePerRequest();
}
}
はしかし、_httpContext.Sessionはnullです。私のデバッガのウォッチウィンドウのイメージです。 HttpContext.Session is null
なぜHttpContext.Sessionがnullで、どうすれば修正できますか?
ありがとうございます!それはうまくいきましたが、以前はそれを試してみましたが、AutofacでHttpContextBaseを解決させた後、.WithParameter(新しいTypedParameter(typeof(HttpContextBase)、新しいHttpContextWrapper(HttpContext.Current)))を登録しました。 AutofacWebTypesModuleは、提案したのと同じことを行うだけでなく、もう少し追加して登録することもできます。 – csalzsieder