c# - WCF / USD / Dynamics 365:SchUseStrongCrypto 在一段时间后失效
问题描述
我知道这似乎是一个老问题,但我认为历史上没有人遇到过同样的问题。
我向 Dynamics 365 版本 9 发送了一个请求IOrganizationService.Create
,并且在似乎十几次之后,测试是可重复的。在某个时候它不再起作用了,我必须重新启动美元。
我得到的错误是:
Exception detail:Error during HTTP request to https://xxxxxxxx.api.crm4.dynamics.com/XRMServices/2011/Organization.svc/web?SDKClientVersion=9.0.9002.0. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server.
Server stack trace:
in System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
in System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
in System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
in System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
in System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
in System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
in System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
in System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
in System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
in Microsoft.Xrm.Sdk.IOrganizationService.Create(Entity entity)
in Microsoft.Xrm.Sdk.WebServiceClient.WebProxyClient`1.ExecuteAction[TResult](Func`1 action)
in Microsoft.Xrm.Sdk.WebServiceClient.OrganizationWebProxyClient.CreateCore(Entity entity)
in CustomHostedControls.HiddenController.DoAction(RequestActionEventArgs args)
in Microsoft.Uii.Csr.Aif.HostedApplication.HostedWpfControl.HandleRequestAction(Object sender, RequestActionEventArgs args)
我已经验证了所有这些条件:
- 测试机器是 Windows 7 Professional Version 6.1 Build 7601 Service Pack 1, 64 bit
SchUseStrongCrypto
设置为1
下HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
和HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
- 该 exe 是 Unified Service Desk 3.2,它的目标是“.NETFramework,Version=v4.6.2”
- 该软件已编译为针对“.NETFramework,Version=v4.5.2”的 dll
- 在我的
UnifiedServiceDesk.exe.config
我有:<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
我还应该检查什么?
谢谢
解决方案
在代码的某处,我有这样一行:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;
解决了这个问题:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls12;
无论如何,最佳解决方案是隔离应用程序域中的代码。
推荐阅读
- laravel - 如果 url 具有不同的参数或路由不存在,如何重定向页面?在 laravel 中
- oracle - ORACLE - 如果在 SELECT 语句中
- r - 通过R中的xlsx包插入图表到excel
- oracle - 使用 Join 更新 oracle 查询问题
- rest - Hyperledger composer rest api添加在作曲家游乐场中找不到的数据
- java - NullPointer 异常增益控制
- php - Laravel 动态 pdf 模板 html
- javascript - Ajax 请求显示错误
- c++ - 如何使用 Google Test (Mock) 期望以特定频率调用函数?
- r - 如何在纬度和经度中从 R 中的 PostGis 转换 Geom 对象?