gpt4 book ai didi

.net - 为什么我的自定义 HttpResponse 在 HttpResponse.End() 上抛出异常?

转载 作者:行者123 更新时间:2023-12-04 06:49:15 35 4
gpt4 key购买 nike

我正在编写一些需要使用我自己的代码 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: Object reference not set to an instance of an object. at System.Web.HttpResponse.End() at ConsoleApplication1.Module1.Main() in C:\Documents and Settings\joe.user\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Module1.vb:line 10

最佳答案

Response.End() 失败,因为您不在 ASP.Net 环境中,而是在控制台/其他非 asp.net 应用程序中。我的猜测是(并通过欺骗和使用 Reflector 证实了这一点)Response.End 引用了 HttpContext.Current(或等效的本地副本),它为 null,因此它会引发该错误。

调用 Response.End 是其他代码的意思。我知道你不能改变它,但如果它真的那么担心,它可能应该调用 Response.Flush。

关于.net - 为什么我的自定义 HttpResponse 在 HttpResponse.End() 上抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347991/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com