重定向到页面时的ASP.NET会话状态错误

时间:2016-05-16 18:23:48

标签: asp.net vb.net webforms

所以我有这个代码设置会话并重定向到另一个页面:

Protected Sub LoginButton_Click(sender As Object, e As EventArgs)


    Dim CredentialsValid = Membership.ValidateUser(UserName.Text, Password.Text)

    If (CredentialsValid) Then
        'Add User Session stuff
        Session.Add("MFUserName", UserName.Text)
        Session.Add("MFPW", Password.Text)
        Response.Redirect("MFACheck.aspx", False)
    Else


    End If

End Sub

当单步执行代码时,我登陆MFACheck.aspx,后面有这个代码:

Public Class MFACheck

Inherits System.Web.UI.Page

Dim UserName = Session.Item("MFUserName")
Dim pw = Session.Item("MFPW")
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


End Sub

我在MFACheck.aspx中点击此行时收到错误

 Dim UserName = Session.Item("MFUserName")

错误说明

Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.

问题在于我似乎满足了这些要求。这是MFACheck.aspx上的页面指令

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/NoNav.Master" CodeBehind="MFACheck.aspx.vb" Inherits="REDACTEDFORSOPOST" EnableSessionState="true" %>

另外,在我的web.config中的system.web下,我有这个:

<sessionState 
        timeout="30"
        mode="InProc"
        cookieless ="false"/>

在system.webServer下,我有这个

<modules>
  <remove name="Session" />
  <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
</modules>

我错过了什么?我似乎有阅读MFACheck.aspx会话的所有要求,为什么页面会给我一个错误?

感谢您的帮助/

1 个答案:

答案 0 :(得分:0)

正如@Kramb在评论中写道,您似乎需要在此处添加module注册:

<configuration>\<system.web>\<httpModules>

web.config架构以及放置的位置取决于运行应用程序的Web服务器的版本。在早期版本的IIS以及(我认为)Cassini服务器中用于Visual Studio旧版本中本地调试的服务器中,moduleshandlers是直接在<system.web>下注册。在较新的版本中,它们位于<system.webServer>之下。

在这种情况下,您使用的环境似乎希望它们位于<system.web>之下,因此请将它们添加到那里。