我正试图在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");
}
}
答案 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"/>
答案 2 :(得分:0)
如果使用win2008和IIS,默认情况下可能未启用会话状态。你能检查一下IIS中是否启用了Session State Mode Settings
吗?
以下是您要寻找的图片:
右键单击并选择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/