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

时间:2013-01-30 18:53:41

标签: c# asp.net session

我正试图在Session["user"]上获得Page_Load,但它一直让我崩溃:

  

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

     

只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态。还请确保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");
    }
}

6 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,并在所有地方的That Hyphenated Website找到了解决方案。我的代码:

    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 )

代码现在按照我的预期执行。警告Empat:我在这个网页上的链接行为与在Google搜索结果页面上的行为有所不同

'session' threw an exception of type 'system.web.httpexception'

答案 1 :(得分: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

答案 2 :(得分:0)

如果使用win2008和IIS,默认情况下可能未启用会话状态。你能检查一下IIS中是否启用了Session State Mode Settings吗?

以下是您要寻找的图片:

enter image description here

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

答案 3 :(得分:0)

尝试在页面指令

中设置EnableSessionState="true"
<%@ Page EnableSessionState="true" %>

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

使用Convert.ToString(),因为如果使用obj.ToString()且对象(obj)值为null,则会抛出类型&#34; System.NullReferenceException&#34;的省略号。 异常的原因是null没有名为ToString()的方法。

Response.Write(&#34; Name:&#34; + Session [&#34; User_Name&#34;]。ToString()); //如果Session [&#34; User_Name&#34;]为空,它将抛出异常。

Response.Write(&#34; Name:&#34; + Convert.ToString(Session [&#34; User_Name&#34;])); //这里不会抛出任何异常。

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