响应在此上下文中不可用

(一)实例1:
在asp.net程序中添加了一个   类.cs   如下
  using   System;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
   
  namespace   My    
  {  
            public   class   Yuna:   System.Web.UI.Page  
          {   
              public   Yuna()   
              {  }   
              public   void   P1()   
              {   
                 Response.Write("调用P1");   
              }   
              public   void   P2()   
              {   
                 Response.Write("调用P2");   
              }  
          }  
  }  
   
  --------------------------------------------------------  
  在其它的网页后台编码文件中该如何引用?我Page_Load中我这样写的,提示响应在此上下文中不可用,错误! 
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
        Yuna   y   =   new   Yuna();  
        y.P1();  
        y.P2();   
  }  
   
--------------------------------------------------------------------
解决方案:
public   class   Yuna         {  
  public   Yuna()  
  {  }  
  public   void   P1()  
  {   
     System.Web.HttpContext.Current.Response.Write("调用P1");  
  }  
  public   void   P2()  
  {   
     System.Web.HttpContext.Current.Response.Write("调用P2");  
  }

   Yuna   y   =   new   Yuna();   
   y.P1();   
   y.P2();   
   你这个   y   是没有经过ASP.NET初始化的,所以没有关联   HttpContext 。
   一般   Page   实例都不应该由用户创建。ASP.NET创建Page后,会调用它的一个内部的方法ProcessRequest并且把HttpContext传进去的。你没有那一步,所以不行。

(二)实例2:
using   System;  
   
  namespace   Txl  
  {   
     ///   <summary>   
     ///   Class1   的摘要说明。   
     ///   </summary>   
     public   class   Fail:System.Web.UI.Page   
     {   
        public   void   HtmlInfo()   
        {   
           Response.Write("sadf");   
        }   
      }  
  }   
    
  在另一页中调用  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {   
     Fail   f=new   Fail();   
     f.HtmlInfo();   
     //Response.Write(x);//   在此处放置用户代码以初始化页面  
  }

  响应在此上下文中不可用。    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.Web.HttpException:   响应在此上下文中不可用。  
   
  源错误:      
  行   10:   public   void   HtmlInfo()  
  行   11:   {  
  行   12:   Response.Write("sadf");  
  行   13:   }  
  行   14:   }  

--------------------------------------------------------------------
解决方案:
只有你的页面是ASP.NET调用的,你的Page类里的Response对象才有意义。  
如果你需要在你自己的类里调用Response,请用System.Web.HttpContext.Current.Response。

原文地址:https://www.cnblogs.com/huazai8204/p/763677.html