我正在使用ASP.Net和C#。我正在使用会话状态将值从一个页面传递到一个页面。第一页计算一个值。使用会话数据将值传递到第二页。第二页显示值。
我正在将这两个页面用于Facebook应用程序。
我上传了两页。当我用Internet Explorer打开它时,它给了我错误:
对象引用未设置为 对象的实例。
描述:未处理的异常 在执行期间发生 当前的网络请求。请查看 堆栈跟踪以获取更多信息 错误及其来源 代码。
异常详细信息: System.NullReferenceException:Object 引用未设置为的实例 对象
但是当我使用firefox打开我的应用程序时,页面工作正常。
请帮帮我......
答案 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" />-->