Я совершенно новый для OWIN, и эта проблема была для меня главным блокиратором.HttpContext.Current.Session is null + OWIN
В принципе, в моем приложении MVC У меня есть следующие в классе запуска:
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
}
}
});
Я не понимаю, почему, когда я отладки, что сессия является недействительным. Свойство HttpContext.Current - нет. Существуют ли ограничения с Session + OWIN? Есть ли способ обхода проблемы? Как к нему подойти?
Примечание стороны 1: Я пытался добавить этот кусок кода, который я нашел в одном из SO вопросов и сессия была еще нулевой:
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();
});
Примечание стороны 2: Я надеваю Кажется, он больше не находит его, но кто-то предложил в одном из вопросов SO добавить пустые методы Session_Start и Session_End (как пустые методы) в Global.asax. Это тоже не сработало.
Я приветствую любые советы. Спасибо!
У меня есть аналогичный выпуск. вы могли найти какое-то решение. – RonakThakkar
Привет @RonakThakkar. К сожалению, пока нет. Мне пришлось отложить эту задачу, потому что я не мог найти решения. Возможно, мы сможем найти решение в этой теме. – AuroMetal