Jestem całkowicie nowym użytkownikiem OWIN i ten problem był dla mnie poważnym blokerem.HttpContext.Current.Session ma wartość null + OWIN
Zasadniczo, w mojej aplikacji MVC mam następujące klasy w Startup:
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = OfficeSettings.ClientId,
Authority = OfficeSettings.Authority,
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters()
{
RoleClaimType = "roles"
},
Notifications = new OpenIdConnectAuthenticationNotifications()
{
AuthorizationCodeReceived = (context) =>
{
// code hidden for readability
if(HttpContext.Current.Session == null)
{
// It's null. Why is that?
}
var session = HttpContext.Current.Session;
if (session["myMockSession"] != null)
{
// Do stuff...
}
},
RedirectToIdentityProvider = (context) =>
{
// code hidden for readability
},
AuthenticationFailed = (context) =>
{
// code hidden for readability
}
}
});
Nie rozumiem dlaczego kiedy jestem debugowania, że sesja jest null. Właściwość HttpContext.Current nie jest. Czy są jakieś ograniczenia dotyczące Sesji + OWIN? Czy istnieje jakieś obejście tego problemu? Jak do niego podejść?
marginesie 1: Próbowałem dodać ten kawałek kodu znalazłem w jednym z SO pytania i sesja była nadal zerowy:
app.Use((context, next) =>
{
// Depending on the handler the request gets mapped to, session might not be enabled. Force it on.
HttpContextBase httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName);
httpContext.SetSessionStateBehavior(SessionStateBehavior.Required);
return next();
});
uwaga Side 2: I don Wydaje się, że to już nie jest, ale ktoś zasugerował w jednym z pytań SO, aby dodać puste metody Session_Start i Session_End (jako puste metody) w Global.asax. To nie zadziałało ani.
Witam każdą radę. Dzięki!
Mam podobny problem. czy byłeś w stanie znaleźć jakieś rozwiązanie. – RonakThakkar
Witam @RonakThakkar. Niestety jeszcze nie. Musiałem odłożyć to zadanie na bok, ponieważ nie mogłem znaleźć żadnego rozwiązania. Być może uda nam się uzyskać rozwiązanie tego wątku. – AuroMetal