我有一个应用程序可以点击BeginRequest并EndRequest设置和拆除NHibernate会话,如下所示:
BeginRequest += delegate
{
CurrentSessionContext.Bind(SessionFactory.OpenSession());
};
EndRequest += delegate
{
var session = CurrentSessionContext.Unbind(SessionFactory);
session.Dispose();
Container.Release(session);
};
Run Code Online (Sandbox Code Playgroud)
这在IIS中部署时工作正常,直到我检查"需要SSL"框.一旦我这样做,我得到NullReferenceException的session.Dispose().
我还没有对此进行调试,是的,修复是微不足道的,但我只是对"需要SSL"如何影响请求的生命周期感到好奇.在这些情况下,服务器上是否未设置会话?
编辑:只是为了澄清,我指的是应用程序的IIS配置中的"需要SSL"选项,而不是RequireHttps控制器的属性.
我知道在ASP.NET MVC中访问SSL页面的简单方法 - 通过[RequireSSL]属性,但我对相反的最佳方法感到困惑.
我的网站上有很多链接在标题栏中,大多数链接不需要SSL,我不想仍然使用SSL.
期货项目可以很容易地自动重定向到SSL页面[RequireSSL(Redirect=true)],但它似乎不容易摆脱这个上下文并自动重定向回http.
我错过了什么?
我们基于 Sitecore 6.6.0(修订版 120918)的网站可以通过 http 和 https 运行。我们还有一项安全要求,即无论网站是否通过 http 访问,都必须通过 SSL 传输所有 cookie。
我们通过在 web.config 中使用 requireSSL 属性实现了这一要求,如下所述:如何在 ASP.NET 会话 Cookie 上设置安全标志?
通过此更改,我们的公共网站运行良好,并且在 Firebug 中进行分析时,我们可以看到所有 cookie 都是“安全的”,即使通过 http 访问该网站也是如此。
但问题是当我尝试通过 http 登录到 sitecore 管理门户时,它抛出错误The application is configured to issue secure cookies. These cookies require the browser to issue the request over SSL (https protocol). However, the current request is not over SSL.我可以访问 sitecore 管理门户的唯一方法是通过 https。即使使用 https,它也会出现一些奇怪的问题。使用一段时间后,它说很多管理员用户已登录,我必须踢出一些才能进入。我也无法远程访问管理员门户。
为什么公共网站使用 SSL cookie,但 sitecore 管理门户有 SSL cookie 问题。它可能是我们网站中不兼容的配置吗?