0

当我尝试在 InitializeCulture 中使用可验证的会话时,出现以下错误:

会话状态只能在 enableSessionState 设置为 true 时使用,无论是在配置文件中还是在 Page 指令中。还请确保 System.Web.SessionStateModule 或自定义会话状态模块包含在应用程序配置的 \\ 部分中。

这是引发错误的代码

    public class BasePage : Page
{
    public string Lang { get; set; }

    protected override void InitializeCulture()
    {
        if (!Page.IsPostBack)
        {
            if (!string.IsNullOrEmpty(Request.QueryString["lang"]))
            {

                Session["lang"] = Request.QueryString["lang"].ToLower();
            }


            if (Session["lang"] != null && !string.IsNullOrEmpty((string)Session["lang"]))
            {
                Lang = (string)Session["lang"];
                string selectedCulture = Lang == "nl" ? "nl-BE" : "fr-BE";

                UICulture = selectedCulture;
                Culture = selectedCulture;

                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedCulture);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedCulture);
            }

            base.InitializeCulture();
        }
    }
}

正如错误中所暗示的,我更改了我的 Web.Config。但它一直抛出同样的错误。

<pages  enableSessionState="true">
                <controls>
                <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </controls>
        </pages>
        <httpModules>
            <remove name="Session" />
            <add name="Session" type="System.Web.SessionStateModule" />
            <add type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" name="UrlRewriter"/>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpModules>

有没有人有解决方案?谢谢!!!

4

1 回答 1

1

尝试在 pages 部分设置 enableSessionState=true。

<system.web>
    <pages enableSessionState="true"> 
</system.web>

此外,如果您在 Windows 2008 上使用 IIS7,您的模块应该在该<system.webServer>部分内,而不是<system.web>.

于 2013-10-22T15:56:34.220 回答