asp.net会话错误

时间:2009-12-15 10:10:46

标签: c# asp.net facebook

我正在使用ASP.Net和C#。我正在使用会话状态将值从一个页面传递到一个页面。第一页计算一个值。使用会话数据将值传递到第二页。第二页显示值。

我正在将这两个页面用于Facebook应用程序。

我上传了两页。当我用Internet Explorer打开它时,它给了我错误:

  

对象引用未设置为   对象的实例。

     

描述:未处理的异常   在执行期间发生   当前的网络请求。请查看   堆栈跟踪以获取更多信息   错误及其来源   代码。

     

异常详细信息:   System.NullReferenceException:Object   引用未设置为的实例   对象

但是当我使用firefox打开我的应用程序时,页面工作正常。

请帮帮我......

4 个答案:

答案 0 :(得分:3)

看来你正在写一个IFRAME facebook应用程序。它只发生在IE吗? 如果它在IE中发生,请将此代码放在使用会话的页面中:

protected override void OnPreRender(EventArgs e)
{
    Response.AppendHeader("P3P", "CP=\"CAO PSA OUR\"");
    base.OnPreRender(e);
}

请参阅“在IFRAME中开发Facebook应用程序时解决IE浏览器问题”部分:http://wiki.developers.facebook.com/index.php/ASP.NET

IE

已经出现问题

希望这很有用

答案 1 :(得分:0)

这听起来像第一页的会话数据由于某种原因在第二页上不可用。您试图从会话中提取值并对其执行操作,但值为null,因此为NullReferenceException

您的Internet Explorer设置是否可能阻止ASP.NET会话cookie?这可能会导致您描述的症状。

答案 2 :(得分:0)

会话可以使用URL而不是cookie。例如,在Web.config中,您可以使用这种会话状态配置:

<sessionState mode="InProc" customProvider="DefaultSessionProvider" cookieless="UseUri">

如果没有以正确的方式完成,只是添加P3P紧凑标题可能会导致诉讼。请参阅Cookie blocked/not saved in IFRAME in Internet Explorer

答案 3 :(得分:0)

在Global.asax文件中添加以下代码

   protected void Application_BeginRequest(object sender, EventArgs e)
    {
     HttpContext.Current.Response.AddHeader("p3p", "CP='CAO PSA OUR'");
    }

和web.config

<system.web>

<pages enableViewState="true" validateRequest="false" />
<httpRuntime requestValidationMode="2.0"/>
<!--
 Enable this code if you get still problem
<sessionState cookieless="true" regenerateExpiredSessionId="true" />-->