所以我有这个代码设置会话并重定向到另一个页面:
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会话的所有要求,为什么页面会给我一个错误?
感谢您的帮助/
答案 0 :(得分:0)
正如@Kramb在评论中写道,您似乎需要在此处添加module
注册:
<configuration>\<system.web>\<httpModules>
web.config
架构以及放置的位置取决于运行应用程序的Web服务器的版本。在早期版本的IIS
以及(我认为)Cassini
服务器中用于Visual Studio
旧版本中本地调试的服务器中,modules
和handlers
是直接在<system.web>
下注册。在较新的版本中,它们位于<system.webServer>
之下。
在这种情况下,您使用的环境似乎希望它们位于<system.web>
之下,因此请将它们添加到那里。