2

HttpResponseをパラメーターとして受け取る別のオブジェクトのメソッドからの出力をキャプチャするために、独自のオブジェクトを使用する必要があるコードを書いてHttpResponseいます。問題は、この他のオブジェクト (変更できない) が を呼び出しHttpResponse.End()、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」という例外がスローされることです。これについて何ができますか?

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

コンソール アプリケーションの次のコードからスローされる、エラーに関するより完全な情報を次に示します。

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

例外のテキストは次のとおりです。

System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。System.Web.HttpResponse.End() at ConsoleApplication1.Module1.Main() C:\Documents and Settings\joe.user\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Module1.vb:line 10

4

2 に答える 2

2

Response.End() は、ASP.Net 環境ではなく、コンソール/その他の非 asp.net アプリケーションにあるため、失敗しています。私の推測では、Response.End は null である HttpContext.Current (または同等のローカル コピー) を参照しているため、そのエラーがスローされます。

Response.End の呼び出しは、その他のコードの意味のようなものです。変更できないことはわかっていますが、本当に心配な場合は、おそらく Response.Flush を呼び出す必要があります。

于 2010-07-28T19:51:51.300 に答える
1

コードを Visual Studio で実行している場合は、デバッガーをオンにせずにコードを実行してみてください (Ctrl F5): その場合、例外は発生しません。それは私のために働いた。

于 2011-01-28T16:12:48.853 に答える