我的云服务辅助角色 (.NET 4.8) 引用 NuGet 包 Microsoft.Data.SqlClient 版本 5.1.2。 该代码在本地运行良好。 Microsoft DevOps 管道构建并发布云服务工件 .cspkg 包 (
msbuild /t:publish /p:OverwriteReadOnlyFiles=true /p:IsPackaging=True ...
),然后将该工件上传到 Azure 云服务(扩展支持)资源。
现在,在 Azure 云服务上运行时,我收到两个异常
System.NullReferenceException
,其中包含这些堆栈跟踪:
System.NullReferenceException:+Object+reference+not+set+to+an+instance+of+an+object.
at Microsoft.Data.SqlClient.SqlCommand.ExecuteReader()+in+D:\a\_work\1\s\src\Microsoft.Data.SqlClient\netfx\ref\Microsoft.Data.SqlClient.cs:line+636
Unexpected+exception+in+AddBenchmarkJobRecord,+details=[System.NullReferenceException:+Object+reference+not+set+to+an+instance+of+an+object.
at Microsoft.Data.SqlClient.SqlConnection.CreateCommand()+in+D:\a\_work\1\s\src\Microsoft.Data.SqlClient\netfx\ref\Microsoft.Data.SqlClient.cs:line+851
有趣的是,堆栈跟踪指向 Microsoft.Data.SqlClient 的引用程序集。 看来运行时会加载引用程序集并执行它,这解释了
NullReferenceExceptions
。
RDP 到 Azure 云服务资源以及程序集文件中我还找到了 Microsoft.Data.SqlClient.dll 参考程序集(仅 72KB,使用反汇编程序验证):
我发现参考程序集文件 Microsoft.Data.SqlClient.dll 是由 DevOps 管道发布的。 我试图在本地重现该内容,但没有成功 - 本地发布的 .cspkg 包包含正确的程序集文件:
问题:
谢谢你。