1

我正在尝试Session["user"]启动,Page_Load但它一直让我崩溃:

'Session' 抛出了 system.web.httpexception 类型的异常

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

这是我的 web.config

<configuration>
<system.web>
<pages enableSessionState="true" />        
    <httpModules>
      <add name="Session" type="System.Web.SessionState.SessionStateModule" />
    </httpModules>
</system.web>
</configuration>

配置标签里面还有其他的东西,但重要的部分是这个,配置正确,但错误仍然相同。

为什么会这样?

.aspx 没什么大不了的

protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        if (Session["user"] == null)
            Response.Redirect("~/Login.aspx");
    }
}
4

7 回答 7

3

我刚刚遇到了类似的问题,并在所有地方的连字符网站上找到了解决方案。我的代码:

    void Application_Error(object sender, EventArgs e )
    {
        Exception ex = Server.GetLastError();
        if ( ex != null )
        {
            if ( ex.GetBaseException() != null )
            {
                ex = ex.GetBaseException();
            }

            if ( Session != null )  // Exception occurred here.
            {
                Session[ "LastException" ] = ex;
            }

            Toolbox.Log( LogLevel.Error, "An Application Error Occurred", ex );
        }
    }

...并将指示的行更改为:

            if ( HttpContext.Current.Session != null )

代码现在按我的预期执行。警告 Emptor:我指向该连字符网站的链接在此页面上的行为与从 Google 结果页面到我的查询的行为不同

'session' threw an exception of type 'system.web.httpexception'
于 2014-12-26T19:54:12.627 回答
0

如果您使用的是 win2008 和 IIS,则默认情况下可能不会启用会话状态。您可以检查是否Session State Mode Settings在 IIS 中启用?

这是您要查找的内容的图片:

在此处输入图像描述

右键单击并选择Open Feature并确保将其设置为enabled.

于 2013-01-30T19:12:27.517 回答
0

尝试EnableSessionState="true"在页面指令中设置

<%@ Page EnableSessionState="true" %>
于 2013-08-20T14:23:23.400 回答
0

您的 web.config 中有 Seesionstate 标签吗?尝试添加此标签。

样本:

        <sessionState mode="Off|InProc|StateServer|SQLServer"
          cookieless="true|false"
          timeout="number of minutes"
          stateConnectionString="tcpip=server:port"
          sqlConnectionString="sql connection string"
          stateNetworkTimeout="number of seconds"/>

更多详情:http: //msdn.microsoft.com/en-us/library/ms178586.aspx

于 2013-01-30T19:09:44.707 回答
0

我不确定这与多少相关,但我最近为自己创造了这个问题。

在一个较旧的 WebForms 项目中,我将一个类的名称从更改_Default[Default]- 遵循样式指南。

Default.aspx那就是我的 WebForms 应用程序的默认页面所继承的 CodeBehind 类。

我不确定为什么这个名称会导致 Session 被删除,但将其改回以立即_Default解决问题。

于 2022-01-12T07:19:40.307 回答
0

Convert.ToString() V/S obj.ToString()

使用 Convert.ToString(),因为如果您使用 obj.ToString() 并且 object(obj) 值为 null,它将引发“System.NullReferenceException”类型的异常。异常的原因是 null 没有名为 ToString() 的方法。

Response.Write("名称:" + Session["User_Name"].ToString()); //这里如果 Session["User_Name"] 为空会抛出异常。

Response.Write("名称:" + Convert.ToString(Session["User_Name"])); //这里不会抛出任何异常。

参考这个链接: http ://burnignorance.com/asp-net-developer-tips/some-best-practices-while-writing-asp-net-code/

于 2016-12-19T11:17:18.977 回答
0

“ASP.NET 状态服务”的启动和停止在类似情况下帮助了我。

于 2015-10-02T09:18:05.740 回答