C# 异步等待任务空引用异常
我正在维护的一个webforms项目上出现了NullReferenceExceptions。问题是,此异常没有stacktrace,因为我的代码中没有任何代码导致此异常。 复制到剪贴板的异常详细信息不提供任何帮助:C# 异步等待任务空引用异常,c#,asp.net,asynchronous,nullreferenceexception,mscorlib,C#,Asp.net,Asynchronous,Nullreferenceexception,Mscorlib,我正在维护的一个webforms项目上出现了NullReferenceExceptions。问题是,此异常没有stacktrace,因为我的代码中没有任何代码导致此异常。 复制到剪贴板的异常详细信息不提供任何帮助: System.NullReferenceException未处理 消息:mscorlib.dll中发生类型为“System.NullReferenceException”的未处理异常 附加信息:对象引用未设置为对象的实例。 当我查看非用户代码stacktrace时,我看到以下内容(
System.NullReferenceException未处理
消息:mscorlib.dll中发生类型为“System.NullReferenceException”的未处理异常
附加信息:对象引用未设置为对象的实例。
当我查看非用户代码stacktrace时,我看到以下内容(全部在mscorlib中):
错误是随机且不一致的,通过加载页面或回发。在我添加了System.Net.Http.HttpClient
用于从其他站点上公开的REST服务提取数据之后,问题就开始了。请注意,HttpClient只包含用于发送/接收数据的异步方法。根据内部stacktrace,我高度怀疑Task/async/wait是罪魁祸首
为了帮助排除故障,请允许我重申,我正在.NET 4.6中编译的WebForms站点中运行此功能(如果您要告诉我我的问题是我需要升级到MVC,请保存您的击键,不要说)。当HttpClient将所有内容作为任务公开时,我通过调用同步调用它们:Task myResultTask=restClient.GetResultAsync();
MyObject myResult=myResultTask.Result;//无等待
提前谢谢 我刚刚遇到了这个问题,希望以此作为答案 在web.config中,确保具有以下内容:
<system.Web>
<httpRuntime targetFramework="4.5" />
</system.Web>
及
如果不这样做,它似乎只是随机崩溃。我非常喜欢向后兼容,但如果你不选择新的方式,它就会崩溃
(斯蒂芬·克利里在评论中建议)打电话等待lol@RenéVogt如果我没记错的话,你可以很容易地遇到各种奇怪的问题而不必担心await@JoeyHerrington:您有吗?另外,为什么您首先要使用HttpClient
?如果需要同步web请求,请使用WebClient
HttpClient
是专为async
/Wait
风格的代码而设计的,Result
和朋友可以死锁。@Joey Herrington:长期来看,我肯定会选择4.5
并升级它损坏的东西。短期内,您可以尝试设置aspnet:UseTaskFriendlySynchronizationContext
(详细信息)。那可能行得通。
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>