gpt4 book ai didi

c# - 异步等待任务空引用异常

转载 作者:行者123 更新时间:2023-12-04 02:10:30 24 4
gpt4 key购买 nike

我正在维护的 webforms 项目出现 NullReferenceExceptions。问题是这个异常没有堆栈跟踪,因为我的代码都没有导致异常。 NullReferenceException was unhandled

复制到剪贴板的异常详细信息提供零帮助:
System.NullReferenceException was unhandled
Message: An unhandled exception of type 'System.NullReferenceException' occurred in mscorlib.dll
Additional information: Object reference not set to an instance of an object.

当我查看非用户代码堆栈跟踪时,我看到以下内容(全部在 mscorlib 中): Stack Trace

错误随机且不一致地发生,无论是通过加载页面还是通过回发。我添加 System.Net.Http.HttpClient 后问题开始了用于从暴露在其他站点上的 REST 服务中提取数据。请注意,HttpClient 仅包含用于发送/接收数据的异步方法。根据内部堆栈跟踪,我高度怀疑 Task<>/async/await 是罪魁祸首。

为了帮助进行故障排除,请允许我再次确认我是在使用 .NET 4.6 编译的 WebForms 站点中运行它(如果您要告诉我我的问题是我需要升级到 MVC,请保存您的击键并且不要说)。虽然 HttpClient 将所有内容都公开为 Task<>,但我通过调用同步调用它们:
Task<MyObject> myResultTask = restClient.GetResultAsync();
MyObject myResult = myResultTask.Result; // no await

提前致谢!

最佳答案

我刚遇到这个问题,想建议这个作为答案。

在您的 web.config 中确保您具有以下内容:

  <system.Web>
<httpRuntime targetFramework="4.5" />
</system.Web>

<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>

在这里查看更多信息:

https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/

如果你不这样做,它似乎只是随机崩溃。我是向后兼容性的忠实拥护者,但如果您不选择采用新方式,它就会崩溃。

(在 Stephen Cleary 的评论中建议)

关于c# - 异步等待任务空引用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39021872/

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