ASP.NET 페이지의 멤버 변수는 페이지를 새로 고칠 때마다 범위를 잃어 버릴 수 있습니다.누군가이 흥미로운 ASP.NET HTTP 파이프 라인 이벤트 동작을 설명 할 수 있습니까?
내가 편집 기능을 "경고"의 그리드를 표시하려면 다음 코드를 :
public partial class Alerts : System.Web.UI.Page
{
private _WikiSyntaxEngine;
protected void Page_Load(object sender, EventArgs e)
{
_WikiSyntaxEngine = new WikiSyntaxEngine();
}
protected void gvAlerts_RowDataBound(object sender, GridViewRowEventArgs e)
{
var alert = (DataModel.Alert)(e.Row.DataItem);
// Below is the only line of interest, because only when published
// to the server would it throw an exception...
string html = _WikiSyntaxEngine.ConvertWikiTextToHTML(alert.Description);
}
}
그것은 단지이 코드가 실패했던 출판하는 개발 서버에 있던 (예는 NullReferenceException
_WikiSyntaxEngine
때문에가 발생합니다 그 행에 대한 갱신 중에는 null
이었습니다.
그러나 로컬 컴퓨터에서 코드가 올바르게 실행됩니다. 행이 업데이트되고 그리드가 예상대로 새로 고쳐집니다.
이후로 나는 WikiSyntaxEngine
을 싱글 톤으로 만드는 코드를 수정했거나 사용 된 모든 곳에서 인스턴스화 할 필요가 없으므로 처음부터 디자인 된 방식이어야합니다.
내 질문은 다음, 어떻게 Page_Load
이벤트 (예상대로) 내 로컬 컴퓨터에 gvAlerts_Databound()
전에 호출 할 수 있지만 _WikiSyntaxEngine
에 대한 NullReferenceException
의 결과로 개발 시스템에 호출되지?