问题描述
我尝试使用Windows身份验证在.NET Core中的HttpClient中使用CRM2011 SOAP服务。 Web服务器始终能够对我进行身份验证,但CRM无法。 因此,我在.NET Framework项目中尝试了相同的代码,并且该请求在第一次尝试时工作正常。
然后,我跟踪了.NET Core和.NET Framework请求并与fiddler进行了比较,并意识到授权标头值是不同的。
经过进一步调查,我找到了Microsoft docs上的HttpClient使用的每个主机和运行时的传输列表: https://docs.microsoft.com/dotnet/api/system.net.http.httpclient?view=netcore-3.1
.NET Framework使用HttpWebRequest,.NET Core使用SocketsHttpHandler。
然后,我在Microsoft文档上找到了另一篇文章,该文章如何避免在.NET Core中使用SocketsHttpHanlder: https://docs.microsoft.com/dotnet/api/system.net.http.socketshttphandler?view=netcore-3.1
在.NET Core中禁用处理程序后,请求也可以正常工作。 我猜这些处理程序正在使用不同的TLS版本或哈希算法或类似的东西,但是我无法找到它们之间的区别。
有人知道它们的区别或来源吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)