zoukankan      html  css  js  c++  java
  • 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态...

    文章转自

    https://www.cnblogs.com/zyj649261718/p/4110429.html

    今天,在IIS上部署网站后,出现了下面错误:

    只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <system.web><httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。

    这段代码在web用户空间中,一开始,百思不得其解,因为在Visual Sutio 2008中调试时没有出现这样的问题,于是百度后,有的说改Web.config中

    <sessionState mode="StateServer" sqlConnectionString="data source=.;Integrated Security=SSPI" timeout="1440" />  

    可是改过后,还是没有效果,又有的说重新建立工程,将文件一一重新复制进去,可以最后还是没有用。

    想想以前也用过这个控件,没有出过错啊,这个问题困惑了许多,某天,突然想到是不是session的问题,于是,这样定义了session:

    HttpContext context = HttpContext.Current;  

    而后,再使用:

    if (context.Session["user"] != null)
    {
    }

    后,提示:

    这是错误变了,是session的问题了,突然想到会不会跟我之前使用URLRewriter.dll页面伪静态化有关呢?

    百度了一下,改了下web.config竟然有用了。

    <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
    <handlers>

    找了下原因:

    Session为空,程序没有异常,那么问题就出在做伪静态的URL重写。IIS判断伪静态页面请求不满足Session这个配置节的默认的运行条件:managedHandler,就是说IIS认为这个请求只是请求一个静态文件。静态文件使用session是肯定会错的。

    至此,网页使用正常。

    最后在项目中

    <system.webServer>
         <validation validateIntegratedModeConfiguration="false" />
         <modules runAllManagedModulesForAllRequests="true">   -->添加runAllManagedModulesForAllRequests="true"即可
         <remove name="ScriptModule" />

  • 相关阅读:
    Java Jsoup Spider抓取数据入库
    DevOps详解
    七款做好DevOps的强大工具
    DevOps 初学者的入门指南
    DevOps必备的20款顶级工具
    Docker 三大核心工具
    Deploying Docker images via SSH
    Shell实现判断进程是否存在并重新启动脚本
    记录:50多行程序中找出多写的一个字母e
    Android 平板中 自己定义键盘(popuwindow) 居于屏幕左下方 仿微信的password输入界面
  • 原文地址:https://www.cnblogs.com/shione/p/8580044.html
Copyright © 2011-2022 走看看