Exemple #1
0
        internal static IServer CreateDynamicHttpServer(string basePath, AuthenticationSchemes authType, out string root, out string baseAddress, RequestDelegate app)
        {
            lock (PortLock)
            {
                while (NextPort < MaxPort)
                {
                    var port   = NextPort++;
                    var prefix = UrlPrefix.Create("http", "localhost", port, basePath);
                    root        = prefix.Scheme + "://" + prefix.Host + ":" + prefix.Port;
                    baseAddress = prefix.ToString();

                    var server = new MessagePump(Options.Create(new WebListenerOptions()), new LoggerFactory());
                    server.Features.Get <IServerAddressesFeature>().Addresses.Add(baseAddress);
                    server.Listener.AuthenticationManager.AuthenticationSchemes = authType;
                    try
                    {
                        server.Start(new DummyApplication(app));
                        return(server);
                    }
                    catch (WebListenerException)
                    {
                    }
                }
                NextPort = BasePort;
            }
            throw new Exception("Failed to locate a free port.");
        }
Exemple #2
0
        internal static IServer CreateServer(string scheme, string host, int port, string path, RequestDelegate app)
        {
            var server = new MessagePump(Options.Create(new WebListenerOptions()), new LoggerFactory());

            server.Features.Get <IServerAddressesFeature>().Addresses.Add(UrlPrefix.Create(scheme, host, port, path).ToString());
            server.Start(new DummyApplication(app));
            return(server);
        }
Exemple #3
0
        private IServer CreateServer(out string root, RequestDelegate app)
        {
            // TODO: We're just doing this to get a dynamic port. This can be removed later when we add support for hot-adding prefixes.
            var dynamicServer = Utilities.CreateHttpServerReturnRoot("/", out root, app);

            dynamicServer.Dispose();
            var rootUri = new Uri(root);
            var server  = new MessagePump(Options.Create(new WebListenerOptions()), new LoggerFactory());

            foreach (string path in new[] { "/", "/11", "/2/3", "/2", "/11/2" })
            {
                server.Listener.UrlPrefixes.Add(UrlPrefix.Create(rootUri.Scheme, rootUri.Host, rootUri.Port, path));
            }

            server.Start(new DummyApplication(app));
            return(server);
        }
Exemple #4
0
        public async Task Server_SetQueueLimit_Success()
        {
            // This is just to get a dynamic port
            string address;

            using (Utilities.CreateHttpServer(out address, httpContext => Task.FromResult(0))) { }

            var server = new MessagePump(Options.Create(new WebListenerOptions()), new LoggerFactory());

            server.Listener.UrlPrefixes.Add(UrlPrefix.Create(address));
            server.Listener.SetRequestQueueLimit(1001);

            using (server)
            {
                server.Start(new DummyApplication(httpContext => Task.FromResult(0)));
                string response = await SendRequestAsync(address);

                Assert.Equal(string.Empty, response);
            }
        }