public void EnableProxyTypes() { if (CurrentServiceEndpoint == null) { throw new InvalidOperationException($"The '{nameof(CurrentServiceEndpoint)}' is NULL"); } lock (this._lockObject) { ProxyTypesBehavior proxyTypesBehavior = this.CurrentServiceEndpoint.Behaviors.Find <ProxyTypesBehavior>(); if (proxyTypesBehavior != null) { this.CurrentServiceEndpoint.Behaviors.Remove(proxyTypesBehavior); } this.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior()); } }
protected virtual IServiceConfiguration <IOrganizationService> CreateServiceConfiguration(CrmConnection connection) { var uri = connection.ServiceUri; var fullServiceUri = uri.AbsolutePath.EndsWith(_organizationUri, StringComparison.OrdinalIgnoreCase) ? uri : new Uri(uri, uri.AbsolutePath.TrimEnd('/') + _organizationUri); var proxyTypesEnabled = connection.ProxyTypesEnabled; var proxyTypesAssembly = connection.ProxyTypesAssembly; var config = ServiceConfigurationFactory.CreateConfiguration <IOrganizationService>(fullServiceUri); if (proxyTypesEnabled) { // configure the data contract surrogate at configuration time instead of at runtime var behavior = new ProxyTypesBehavior(proxyTypesAssembly) as IEndpointBehavior; behavior.ApplyClientBehavior(config.CurrentServiceEndpoint, null); } return(config); }