private static void CustomizeMetadataEndpoints(ServiceDescription description, ServiceHostBase host, ServiceMetadataExtension mex) { for (int i = 0; i < host.ChannelDispatchers.Count; i++) { ChannelDispatcher channelDispatcher = host.ChannelDispatchers[i] as ChannelDispatcher; if (channelDispatcher != null && ServiceMetadataBehavior.IsMetadataTransferDispatcher(description, channelDispatcher)) { if (channelDispatcher.Endpoints.Count != 1) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new InvalidOperationException(SR.GetString(SR.SFxServiceMetadataBehaviorInstancingError, channelDispatcher.Listener.Uri, channelDispatcher.CreateContractListString()))); } DispatchRuntime dispatcher = channelDispatcher.Endpoints[0].DispatchRuntime; // set instancing dispatcher.InstanceContextProvider = InstanceContextProviderBase.GetProviderForMode(InstanceContextMode.Single, dispatcher); bool isListeningOnHttps = channelDispatcher.Listener.Uri.Scheme == Uri.UriSchemeHttps; Uri listenUri = channelDispatcher.Listener.Uri; ServiceMetadataExtension.WSMexImpl impl = new ServiceMetadataExtension.WSMexImpl(mex, isListeningOnHttps, listenUri); dispatcher.SingletonInstanceContext = new InstanceContext(host, impl, false); } } }
private static void CustomizeMetadataEndpoints(ServiceDescription description, ServiceHostBase host, ServiceMetadataExtension mex) { for (int i = 0; i < host.ChannelDispatchers.Count; i++) { ChannelDispatcher channelDispatcher = host.ChannelDispatchers[i] as ChannelDispatcher; if (channelDispatcher != null && ServiceMetadataBehavior.IsMetadataTransferDispatcher(description, channelDispatcher)) { if (channelDispatcher.Endpoints.Count != 1) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new InvalidOperationException(SR.GetString(SR.SFxServiceMetadataBehaviorInstancingError, channelDispatcher.Listener.Uri, channelDispatcher.CreateContractListString()))); } DispatchRuntime dispatcher = channelDispatcher.Endpoints[0].DispatchRuntime; // set instancing dispatcher.InstanceContextProvider = InstanceContextProviderBase.GetProviderForMode(InstanceContextMode.Single, dispatcher); bool isListeningOnHttps = channelDispatcher.Listener.Uri.Scheme == Uri.UriSchemeHttps; Uri listenUri = channelDispatcher.Listener.Uri; ServiceMetadataExtension.WSMexImpl impl = new ServiceMetadataExtension.WSMexImpl(mex, isListeningOnHttps, listenUri); dispatcher.SingletonInstanceContext = new InstanceContext(host, impl, false); } } }