Example #1
0
        protected override void OnStart(HttpServerBase.StartStopContext context, ref bool isRunning)
        {
            this.DisposeOldServiceHost();

            ServiceHost newHost = new ServiceHost(new WcfHttpServerService(this));

            try
            {
                var useHttps = this.UseSecureHttp;

                int port;
                if (useHttps)
                {
                    port = this.Port ?? DEFAULT_PORT_SECURE_HTTP;
                }
                else
                {
                    port = this.Port ?? DEFAULT_PORT_HTTP;
                }

                var baseUrl = new Uri(string.Format("http{0}://localhost:{1}",
                                                    useHttps ? "s" : string.Empty,
                                                    port));

                HttpTransportBindingElement transport;
                if (useHttps)
                {
                    transport = new HttpsTransportBindingElement();

                    // SSL certificate
                    newHost.Credentials
                    .ClientCertificate
                    .Certificate = this.SslCertificate;
                }
                else
                {
                    transport = new HttpTransportBindingElement();
                }

                transport.KeepAliveEnabled       = false;
                transport.MaxBufferPoolSize      = int.MaxValue;
                transport.MaxBufferSize          = int.MaxValue;
                transport.MaxReceivedMessageSize = int.MaxValue;
                transport.TransferMode           = ToWcfTransferMode(this.TransferMode);

                var credValidator = this.CredentialValidator;
                if (credValidator != null)
                {
                    transport.AuthenticationScheme = AuthenticationSchemes.Basic;

                    newHost.Description.Behaviors.Remove <ServiceCredentials>();
                    newHost.Description.Behaviors.Add(new PasswordCredentials(credValidator));
                }
                else
                {
                    transport.AuthenticationScheme = AuthenticationSchemes.Anonymous;
                }

                var binding = new CustomBinding(WcfHttpServerService.CreateWebMessageBindingEncoder(),
                                                transport);

                newHost.AddServiceEndpoint(typeof(IWcfHttpServerService), binding, baseUrl);

                newHost.Open();
                this.Host = newHost;
            }
            catch
            {
                // dispose before rethrow exception
                ((IDisposable)newHost).Dispose();

                throw;
            }
        }
Example #2
0
 protected override void OnStop(HttpServerBase.StartStopContext context, ref bool isRunning)
 {
     this.DisposeOldServiceHost();
 }