Hi all,
I'm running an on-premise instance of Dynamics 365 Customer Engagement (version 9.1.7.5), and my Dynamics' w3wp trace log kept logging the following error:
[2022-03-11 12:59:36.648] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread: 37 |Category: Platform.Sdk |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: 00000000-0000-0000-0000-000000000000 |ActivityId: 32c0a4b3-d5b4-4f1f-9eac-eff8d1ccc03d | ServiceModelTraceRedirector.TraceData ilOffset = 0x5B > https://docs.microsoft.com/dotnet/framework/wcf/diagnostics/tracing/System-ServiceModel-Diagnostics-ThrowingException Throwing an exception. /LM/W3SVC/2/ROOT-1-132914735122544941 System.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 The client certificate is not provided. Specify a client certificate in ClientCredentials. at System.ServiceModel.ClientCredentialsSecurityTokenManager.CreateSecurityTokenProvider(SecurityTokenRequirement tokenRequirement, Boolean disableInfoCard) ...
In order to get rid of this error, I tried setting the AppFabricIssuer certificate as described in this blog post: https://kyledoestech.com/service-integration-issuer-information-not-found-dynamics-365/
This seems to have partially worked, as there is now a different error that's being logged:
[2022-03-14 23:59:58.432] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread: 13 |Category: Platform.Sdk |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: 00000000-0000-0000-0000-000000000000 |ActivityId: 9e27ecbf-c072-4f7b-bbaa-d5ec39b87319 | ServiceModelTraceRedirector.TraceData ilOffset = 0x5B > https://docs.microsoft.com/dotnet/framework/wcf/diagnostics/tracing/System-ServiceModel-Diagnostics-ThrowingException Throwing an exception. /LM/W3SVC/2/ROOT-1-132917478165603579 System.ServiceModel.ProtocolException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 The requested upgrade is not supported by 'net.tcp://myserver/CrmSandboxHost'. This could be due to mismatched bindings (for example security enabled on the client and not on the server). at System.ServiceModel.Channels.ConnectionUpgradeHelper.DecodeFramingFault(ClientFramingDecoder decoder, IConnection connection, Uri via, String contentType, TimeoutHelper& timeoutHelper) > at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper) > at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper) > at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout) > at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout) > at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) > at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout) > at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) > at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout) > at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade) > at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout) > at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) > at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) > at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) > at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) > at Microsoft.Crm.Sandbox.ISandboxHost.Ping(SandboxCallInfo callInfo, SandboxHostConfiguration hostConfigurationInfo, SandboxWorkerConfiguration workerConfigurationInfo, Dictionary`2 sandboxAdditionalInfo, CrmTraceRemoteSettings remoteSettings, SandboxWorkerExecutionRecord& workerExecutionRecord, String& hostSidSddlForm) > at Microsoft.Xrm.RemotePlugin.Wcf.Client.WcfHostClient.Ping(IsolationType isolationType) > at Microsoft.Xrm.RemotePlugin.Client.SandboxHostHealthChecker.TryGetAuthMode(IIndex`2 channelByAuthMode, IsolationType isolationType, RemoteHost remoteHost, ILogger logger, ServiceStatus& status, AuthMode& validAuthMode) > at Microsoft.Xrm.RemotePlugin.Client.SandboxHostHealthChecker.<>c__DisplayClass16_1.<BackgroundHealthMonitorInternal>b__2() > at Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action, IEnumerable`1 additionalCustomProperties) > at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action) > at Microsoft.Xrm.RemotePlugin.Client.SandboxHostHealthChecker.<>c__DisplayClass16_0.<BackgroundHealthMonitorInternal>b__0() > at System.Threading.Tasks.Task.Execute() > at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) > at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) > at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) > at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) > at System.Threading.ThreadPoolWorkQueue.Dispatch() > System.ServiceModel.ProtocolException: The requested upgrade is not supported by 'net.tcp://myserver/CrmSandboxHost'. This could be due to mismatched bindings (for example security enabled on the client and not on the server).
It looks like something isn't configured properly with the CrmSandbox, but I have no idea how to fix this...
Any help would be greatly appreciated.