2010-07-20 2 views
1

У меня есть объект CustomRequestContext, который должен быть удален после каждого запроса. Я создаю его в Page_Load и утилизирую его в Page_Unload. Единственная проблема заключается в том, что при определенных обстоятельствах мне нужно позвонить Server.Transfer, чтобы перенаправить на другую страницу aspx. В этом случае объект нельзя выгружать до тех пор, пока новая страница не будет готова к выгрузке. Каков наилучший способ добиться этого?Устранение объекта после запроса (возможно, перенаправленного)

ответ

0

Я решил эту проблему, позволив объекту владеть одной страницей за раз. Если бы я хотел отказаться от контроля со страницы, я бы установил ее равной нулю, а затем она не будет выпущена в деструкторе страницы.

0

создать собственный класс PageBase для всех ваших страниц asp.net, как указано ниже, и утилизировать CustomRequestContext на событиях Page_Load и Page_Unload.

/// <summary> 
/// Base of front end web pages. 
/// </summary> 
public class PageBase : System.Web.UI.Page 
{ 

    /// <summary> 
    /// Initializes a new instance of the Page class. 
    /// </summary> 
    public Page() 
    { 
     this.Load += new EventHandler(this.Page_Load); 
     this.UnLoad += new EventHandler(this.Page_UnLoad); 
    } 

    /// <summary> 
    /// Page Load 
    /// </summary> 
    /// <param name="sender">sender as object</param> 
    /// <param name="e">Event arguments</param> 
    private void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      //Dispose the object here, assuming it is IDisposable. 
      //You can apply your own Disposition steps here.. 
      CustomRequestContext.Dispose(); 
     } 
     catch 
     { 
      //handle the situation gracefully here. 
     } 
    } 

    /// <summary> 
    /// Page UnLoad 
    /// </summary> 
    /// <param name="sender">sender as object</param> 
    /// <param name="e">Event arguments</param> 
    private void Page_UnLoad(object sender, EventArgs e) 
    { 
     try 
     { 
      //Dispose the object here, assuming it is IDisposable. 
      //You can apply your own Disposition steps here.. 
      CustomRequestContext.Dispose(); 
     } 
     catch 
     { 
      //handle the situation gracefully here. 
     } 
    } 
} 
+0

Вы утилизируете его как при загрузке, так и при разгрузке. Является ли ваше предположение, что я должен просто повторно создать объект контекста, а не пытаться его сохранить? – Casebash

+0

Nope. Я просто представил идею о том, как вы можете распоряжаться объектом по данным событиям. Это до вас, когда нужно удалить объект. –

Смежные вопросы