2010-07-27 2 views
2

나는 자신의 HttpResponse 개체를 사용하여 HttpResponse을 매개 변수로 사용하는 다른 개체의 메서드에서 출력을 캡처해야하는 코드를 작성 중입니다. 문제는 다른 수정할 수없는 개체 인 HttpResponse.End()이 호출되어 "개체 참조가 개체 인스턴스로 설정되지 않았습니다"예외가 발생한다는 것입니다. 이것에 대해 내가 뭘 할 수 있니?내 맞춤 HttpResponse가 HttpResponse.End()에서 예외를 throw하는 이유는 무엇입니까?

System.NullReferenceException : 여기

Dim myStringbuilder As New StringBuilder 
Dim myStringWriter As New IO.StringWriter(myStringbuilder) 
Dim myResponse As New Web.HttpResponse(myStringWriter) 
Try 
myResponse.End() 
Catch ex As Exception 
Console.WriteLine(ex.ToString) 
End Try 

예외의 텍스트입니다 : 여기
Dim myStringbuilder As New StringBuilder 
Dim myStringWriter As New IO.StringWriter(myStringbuilder) 
Dim myResponse As New Web.HttpResponse(myStringWriter) 

someObject.doStuffWithHttpResponse(myResponse) ' calls myResponse.End() and crashes 

는 콘솔 응용 프로그램에서 다음 코드에서 던진 오류에 대한 좀 더 완전한 정보입니다 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. at System.Web.HttpResponse.End() (ConsoleApplication1.Module1.Main() (C : \ Documents and Settings \ joe.user \ Local Settings \ Application 데이터 \ 임시 프로젝트 \ ConsoleApplication1 \ Module1.vb : 줄 10

)
+1

Response.End()는 일반적으로 ThreadAbortException을 발생시킵니다. 스택 추적을 포함시킬 수 있습니까? 대신 null 참조 예외가 발생하는 이유를 이해하는 데 도움이 될 수 있습니다. – mikemanne

+0

예외 텍스트를 게시했습니다. 보시다시피,'ThreadAbortException'은 없습니다. –

답변

2

ASP.Net 환경이 아니기 때문에 Response.End()가 실패했습니다. 콘솔/기타 nonasp.net 응용 프로그램에 있기 때문입니다. 내 생각 엔, Response.End가 null 인 HttpContext.Current (또는 equivelant 로컬 복사본)를 참조하므로 오류가 발생합니다 (속임수와 반사경을 사용하여 확인).

호출 Response.End는 다른 코드의 의미입니다. 나는 당신이 그것을 바꿀 수 없다는 것을 알고 있지만 아마도 Response.Flush를 호출해야한다. 정말로 걱정된다면.

+1

다른 호출 코드는 MS Windows Identity Foundation에서 가져온 것입니다! –

+4

System.God인지 상관 없지만 여전히 의미 있다고 생각합니다. – Peter

1

Visual Studio에서 코드를 실행하는 경우 디버거를 사용하지 않고 코드를 실행 해보십시오 (Ctrl F5). 예외는 발생하지 않아야합니다. 그것은 나를 위해 일했습니다.

+0

그러나 그것은 나를 위해하지 않았다. 나는 아직도 작업 솔루션을 얻고 싶어합니다. 셰어 포인트 2010 여기. – Renan

관련 문제