日期:2014-05-17  浏览次数:20463 次

【求助】asp.net的Page_UnLoad方法报未将对象引用设置到对象的实例错误
以下是我的代码,从书上抄的,书上的代码是VB的,我改为c#版的。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Import namespace="System.IO" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>读写本地文件测试</title>
</head>
<body>
<script language="C#" runat="Server">
  public StreamWriter writeFile;
  void Page_Load(Object sender, EventArgs e)
  {
  writeFile=File.CreateText("f:\test.txt");
  writeFile.WriteLine("这是一个测试文件!");
  writeFile.WriteLine("使用了Page_Load事件和Page_Unload事件!");
  Response.Write("test.txt合建并写入成功!");
  }
  void Page_Unload(Object Sender, EventArgs e)
  {
  writeFile.Close();
  }
</script>
</body>
</html>
==============================================

以下是报错信息

==============================================

“/”应用程序中的服务器错误。
--------------------------------------------

未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

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

源错误: 

只有在调试模式下进行编译时,生成此未处理异常的源代码才会显示出来。若要启用此功能,请执行以下步骤之一,然后请求 URL: 

1. 在产生错误的文件的顶部添加一条“Debug=true”指令。例如: 

  <%@ Page Language="C#" Debug="true" %>

或:

2. 将以下的节添加到应用程序的配置文件中:

<configuration>
  <system.web>
  <compilation debug="true"/>
  </system.web>
</configuration>

请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。

重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。  

堆栈跟踪: 


[NullReferenceException: 未将对象引用设置到对象的实例。]
  ASP._01web页面_readwritefile_aspx.Page_Unload(Object Sender, EventArgs e) +11
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
  System.Web.UI.Control.OnUnload(EventArgs e) +8696618
  System.Web.UI.Control.UnloadRecursive(Boolean dispose) +247
  System.Web.UI.Page.UnloadRecursive(Boolean dispose) +23
  System.Web.UI.Page.ProcessRequestCleanup() +43
  System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +242
  System.Web.UI.Page.ProcessRequest() +80
  System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
  System.Web.UI.Page.ProcessRequest(HttpContext context) +49
  ASP._01web页面_readwritefile_aspx.ProcessRequest(HttpContext context) +4
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
  System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

 
==========================================
有没有大侠知道这个是什么原因造成的?
我在MSDN上没有查到Page_Unload这个方法。但书上却写了这个方法。。。

------解决方案--------------------
不出错才奇怪了。
C# code
//like this: try
writeFile=File.CreateText(@"f:\test.