Ejemplo n.º 1
0
 private static IEnumerable<string> GetHeaderSplitImplementation(StringValues values)
 {
     foreach (var segment in new HeaderSegmentCollection(values))
     {
         if (segment.Data.HasValue)
         {
             yield return DeQuote(segment.Data.Value);
         }
     }
 }
 string QueryToJson(IQueryCollection query)
 {
     var dict = new Dictionary<string,string>();
     foreach (var key in query.Keys) {
         StringValues @value = new StringValues();
         query.TryGetValue(key, out @value);
         dict.Add(key, @value.ToString());
     }
     return JsonConvert.SerializeObject(dict);
 }
        public void Append(string key, string value)
        {
            if (_accumulator == null)
            {
                _accumulator = new Dictionary<string, StringValues>(StringComparer.OrdinalIgnoreCase);
            }

            StringValues values;
            if (_accumulator.TryGetValue(key, out values))
            {
                if (values.Count == 0)
                {
                    // Marker entry for this key to indicate entry already in expanding list dictionary
                    _expandingAccumulator[key].Add(value);
                }
                else if (values.Count == 1)
                {
                    // Second value for this key
                    _accumulator[key] = new string[] { values[0], value };
                }
                else
                {
                    // Third value for this key
                    // Add zero count entry and move to data to expanding list dictionary
                    _accumulator[key] = default(StringValues);

                    if (_expandingAccumulator == null)
                    {
                        _expandingAccumulator = new Dictionary<string, List<string>>(StringComparer.OrdinalIgnoreCase);
                    }

                    // Already 3 entries so use starting allocated as 8; then use List's expansion mechanism for more
                    var list = new List<string>(8);
                    var array = values.ToArray();

                    list.Add(array[0]);
                    list.Add(array[1]);
                    list.Add(value);

                    _expandingAccumulator[key] = list;
                }
            }
            else
            {
                // First value for this key
                _accumulator[key] = new StringValues(value);
            }

            ValueCount++;
        }
Ejemplo n.º 4
0
        public async Task IgnoreNullHeaderValues(string headerName, StringValues headerValue, string expectedValue)
        {
            var config = new ConfigurationBuilder()
                .AddInMemoryCollection(new Dictionary<string, string>
                {
                    { "server.urls", "http://localhost:8793/" }
                })
                .Build();

            var hostBuilder = new WebApplicationBuilder()
                .UseConfiguration(config)
                .UseServerFactory("Microsoft.AspNet.Server.Kestrel")
                .Configure(app =>
                {
                    app.Run(async context =>
                    {
                        context.Response.Headers.Add(headerName, headerValue);
                        
                        await context.Response.WriteAsync("");
                    });
                });

            using (var app = hostBuilder.Build().Start())
            {
                using (var client = new HttpClient())
                {
                    var response = await client.GetAsync("http://localhost:8793/");
                    response.EnsureSuccessStatusCode();

                    var headers = response.Headers;

                    if (expectedValue == null)
                    {
                        Assert.False(headers.Contains(headerName));
                    }
                    else
                    {
                        Assert.True(headers.Contains(headerName));
                        Assert.Equal(headers.GetValues(headerName).Single(), expectedValue);
                    }
                }
            }
        }
Ejemplo n.º 5
0
        public static void SetHeaderJoined(IHeaderDictionary headers, string key, StringValues value)
        {
            if (headers == null)
            {
                throw new ArgumentNullException(nameof(headers));
            }

            if (string.IsNullOrWhiteSpace(key))
            {
                throw new ArgumentNullException(nameof(key));
            }
            if (StringValues.IsNullOrEmpty(value))
            {
                headers.Remove(key);
            }
            else
            {
                headers[key] = string.Join(",", value.Select((s) => QuoteIfNeeded(s)));
            }
        }
Ejemplo n.º 6
0
 public void Main(string[] args)
 {
     for (int i = 0; i < 10; i++)
     {
         Stopwatch timer = new Stopwatch();
         timer.Start();
         string myString;
         string[] myArray;
         StringValues myValues;
         for (int j = 0; j < 100000000; j++)
         {
             myString = new string('a', 40);
             myArray = new[] { myString };
             // myValues = new StringValues(myString);
             myValues = new StringValues(myArray);
         }
         timer.Stop();
         Console.WriteLine(timer.Elapsed + ", " + Environment.WorkingSet);
     }
 }
Ejemplo n.º 7
0
    private bool TryValidatePseudoHeaders()
    {
        // The initial pseudo header validation takes place in Http2Connection.ValidateHeader and StartStream
        // They make sure the right fields are at least present (except for Connect requests) exactly once.

        _httpVersion = Http.HttpVersion.Http2;

        // Method could already have been set from :method static table index
        if (Method == HttpMethod.None && !TryValidateMethod())
        {
            return(false);
        }

        if (!TryValidateAuthorityAndHost(out var hostText))
        {
            return(false);
        }

        if (Method == HttpMethod.Connect)
        {
            // https://datatracker.ietf.org/doc/html/rfc8441#section-4
            // HTTP/2 WebSockets
            if (!StringValues.IsNullOrEmpty(HttpRequestHeaders.HeaderProtocol))
            {
                // On requests that contain the :protocol pseudo-header field, the :scheme and :path pseudo-header fields of the target URI MUST also be included.
                if (StringValues.IsNullOrEmpty(HttpRequestHeaders.HeaderScheme) || StringValues.IsNullOrEmpty(HttpRequestHeaders.HeaderPath))
                {
                    ResetAndAbort(new ConnectionAbortedException(CoreStrings.ConnectRequestsWithProtocolRequireSchemeAndPath), Http2ErrorCode.PROTOCOL_ERROR);
                    return(false);
                }
                ConnectProtocol          = HttpRequestHeaders.HeaderProtocol;
                IsExtendedConnectRequest = true;
            }
            // CONNECT - :scheme and :path must be excluded
            else if (!StringValues.IsNullOrEmpty(HttpRequestHeaders.HeaderScheme) || !StringValues.IsNullOrEmpty(HttpRequestHeaders.HeaderPath))
            {
                ResetAndAbort(new ConnectionAbortedException(CoreStrings.Http2ErrorConnectMustNotSendSchemeOrPath), Http2ErrorCode.PROTOCOL_ERROR);
                return(false);
            }
            else
            {
                RawTarget = hostText;
                return(true);
            }
        }
        else if (!StringValues.IsNullOrEmpty(HttpRequestHeaders.HeaderProtocol))
        {
            ResetAndAbort(new ConnectionAbortedException(CoreStrings.ProtocolRequiresConnect), Http2ErrorCode.PROTOCOL_ERROR);
            return(false);
        }

        // :scheme https://tools.ietf.org/html/rfc7540#section-8.1.2.3
        // ":scheme" is not restricted to "http" and "https" schemed URIs.  A
        // proxy or gateway can translate requests for non - HTTP schemes,
        // enabling the use of HTTP to interact with non - HTTP services.
        // A common example is TLS termination.
        var headerScheme = HttpRequestHeaders.HeaderScheme.ToString();

        if (!ReferenceEquals(headerScheme, Scheme) &&
            !string.Equals(headerScheme, Scheme, StringComparison.OrdinalIgnoreCase))
        {
            if (!ServerOptions.AllowAlternateSchemes || !Uri.CheckSchemeName(headerScheme))
            {
                ResetAndAbort(new ConnectionAbortedException(
                                  CoreStrings.FormatHttp2StreamErrorSchemeMismatch(headerScheme, Scheme)), Http2ErrorCode.PROTOCOL_ERROR);
                return(false);
            }

            Scheme = headerScheme;
        }

        // :path (and query) - Required
        // Must start with / except may be * for OPTIONS
        var path = HttpRequestHeaders.HeaderPath.ToString();

        RawTarget = path;

        // OPTIONS - https://tools.ietf.org/html/rfc7540#section-8.1.2.3
        // This pseudo-header field MUST NOT be empty for "http" or "https"
        // URIs; "http" or "https" URIs that do not contain a path component
        // MUST include a value of '/'.  The exception to this rule is an
        // OPTIONS request for an "http" or "https" URI that does not include
        // a path component; these MUST include a ":path" pseudo-header field
        // with a value of '*'.
        if (Method == HttpMethod.Options && path.Length == 1 && path[0] == '*')
        {
            // * is stored in RawTarget only since HttpRequest expects Path to be empty or start with a /.
            Path        = string.Empty;
            QueryString = string.Empty;
            return(true);
        }

        // Approximate MaxRequestLineSize by totaling the required pseudo header field lengths.
        var requestLineLength = _methodText !.Length + Scheme !.Length + hostText.Length + path.Length;

        if (requestLineLength > ServerOptions.Limits.MaxRequestLineSize)
        {
            ResetAndAbort(new ConnectionAbortedException(CoreStrings.BadRequest_RequestLineTooLong), Http2ErrorCode.PROTOCOL_ERROR);
            return(false);
        }

        var queryIndex = path.IndexOf('?');

        QueryString = queryIndex == -1 ? string.Empty : path.Substring(queryIndex);

        var pathSegment = queryIndex == -1 ? path.AsSpan() : path.AsSpan(0, queryIndex);

        return(TryValidatePath(pathSegment));
    }
Ejemplo n.º 8
0
        public async Task ConnectionNotClosedWhenClientSatisfiesMinimumDataRateGivenLargeResponseHeaders()
        {
            var headerSize         = 1024 * 1024; // 1 MB for each header value
            var headerCount        = 64;          // 64 MB of headers per response
            var requestCount       = 4;           // Minimum of 256 MB of total response headers
            var headerValue        = new string('a', headerSize);
            var headerStringValues = new StringValues(Enumerable.Repeat(headerValue, headerCount).ToArray());

            var requestAborted   = false;
            var mockKestrelTrace = new Mock <KestrelTrace>(Logger)
            {
                CallBase = true
            };

            var testContext = new TestServiceContext
            {
                Log           = mockKestrelTrace.Object,
                ServerOptions =
                {
                    Limits                  =
                    {
                        MinResponseDataRate = new MinDataRate(bytesPerSecond: 240, gracePeriod: TimeSpan.FromSeconds(2))
                    }
                }
            };

            testContext.InitializeHeartbeat();

            var listenOptions = new ListenOptions(new IPEndPoint(IPAddress.Loopback, 0));

            async Task App(HttpContext context)
            {
                context.RequestAborted.Register(() =>
                {
                    requestAborted = true;
                });

                context.Response.Headers[$"X-Custom-Header"] = headerStringValues;
                context.Response.ContentLength = 0;

                await context.Response.Body.FlushAsync();
            }

            using (var server = new TestServer(App, testContext, listenOptions))
            {
                using (var connection = server.CreateConnection())
                {
                    for (var i = 0; i < requestCount - 1; i++)
                    {
                        await connection.Send(
                            "GET / HTTP/1.1",
                            "Host:",
                            "",
                            "");
                    }

                    // Close the connection with the last request so AssertStreamCompleted actually completes.
                    await connection.Send(
                        "GET / HTTP/1.1",
                        "Host:",
                        "Connection: close",
                        "",
                        "");

                    var responseSize       = headerSize * headerCount;
                    var minTotalOutputSize = requestCount * responseSize;

                    // Make sure consuming a single set of response headers exceeds the 2 second timeout.
                    var targetBytesPerSecond = responseSize / 4;
                    await AssertStreamCompleted(connection.Reader.BaseStream, minTotalOutputSize, targetBytesPerSecond);

                    mockKestrelTrace.Verify(t => t.ResponseMininumDataRateNotSatisfied(It.IsAny <string>(), It.IsAny <string>()), Times.Never());
                    mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny <string>()), Times.Once());
                    Assert.False(requestAborted);
                }
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 处理微信授权结果(接收微信授权的回调)
        /// </summary>
        /// <returns></returns>
        protected override async Task <HandleRequestResult> HandleRemoteAuthenticateAsync()
        {
            //第一步,处理工作
            AuthenticationProperties properties = null;
            var query = Request.Query;

            //微信只会发送code和state两个参数,不会返回错误消息
            //若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数
            var code  = query["code"];
            var state = query["state"];

            properties = Options.StateDataFormat.Unprotect(state);
            if (properties == null)
            {
                return(HandleRequestResult.Fail("The oauth state was missing or invalid."));
            }

            // OAuth2 10.12 CSRF
            if (!ValidateCorrelationId(properties))
            {
                return(HandleRequestResult.Fail("Correlation failed."));
            }

            if (StringValues.IsNullOrEmpty(code)) //code为null就是
            {
                return(HandleRequestResult.Fail("Code was not found."));
            }

            //第二步,通过Code获取Access Token
            var tokens = await ExchangeCodeAsync(code, BuildRedirectUri(Options.CallbackPath));

            if (tokens.Error != null)
            {
                return(HandleRequestResult.Fail(tokens.Error));
            }

            if (string.IsNullOrEmpty(tokens.AccessToken))
            {
                return(HandleRequestResult.Fail("Failed to retrieve access token."));
            }

            var identity = new ClaimsIdentity(ClaimsIssuer);

            if (Options.SaveTokens)
            {
                var authTokens = new List <AuthenticationToken>();

                authTokens.Add(new AuthenticationToken {
                    Name = "access_token", Value = tokens.AccessToken
                });
                if (!string.IsNullOrEmpty(tokens.RefreshToken))
                {
                    authTokens.Add(new AuthenticationToken {
                        Name = "refresh_token", Value = tokens.RefreshToken
                    });
                }

                if (!string.IsNullOrEmpty(tokens.TokenType)) //微信就没有这个
                {
                    authTokens.Add(new AuthenticationToken {
                        Name = "token_type", Value = tokens.TokenType
                    });
                }

                if (!string.IsNullOrEmpty(tokens.ExpiresIn))
                {
                    int value;
                    if (int.TryParse(tokens.ExpiresIn, NumberStyles.Integer, CultureInfo.InvariantCulture, out value))
                    {
                        // https://www.w3.org/TR/xmlschema-2/#dateTime
                        // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx
                        var expiresAt = Clock.UtcNow + TimeSpan.FromSeconds(value);
                        authTokens.Add(new AuthenticationToken
                        {
                            Name  = "expires_at",
                            Value = expiresAt.ToString("o", CultureInfo.InvariantCulture)
                        });
                    }
                }

                properties.StoreTokens(authTokens);
            }

            var ticket = await CreateTicketAsync(identity, properties, tokens);

            if (ticket != null)
            {
                return(HandleRequestResult.Success(ticket));
            }
            else
            {
                return(HandleRequestResult.Fail("Failed to retrieve user information from remote server."));
            }
        }
Ejemplo n.º 10
0
 protected virtual bool TryGetValueFast(string key, out StringValues value)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
 protected static StringValues AppendValue(StringValues existing, string append)
 {
     return(StringValues.Concat(existing, append));
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Implementation.
        /// </summary>
        /// <param name="context">The http context.</param>
        /// <returns>The awaitable.</returns>
        public Task Invoke(HttpContext context)
        {
            if (context.Request.Query.ContainsKey("readCookies"))
            {
                context.Response.StatusCode = StatusCodes.Status200OK;
                var b = new StringBuilder();
                foreach (var c in context.Request.Cookies)
                {
                    b.Append(c.Key).Append(':').AppendLine(c.Value);
                }
                Console.WriteLine(">> readCookies");
                Console.WriteLine(b.ToString());
                return(context.Response.WriteAsync(b.ToString()));
            }
            if (context.Request.Path.StartsWithSegments("/sayHello"))
            {
                context.Response.StatusCode = StatusCodes.Status200OK;
                return(context.Response.WriteAsync("Hello! " + _s.GetText()));
            }
            if (context.Request.Path.StartsWithSegments("/readHeader"))
            {
                string       name   = context.Request.Query["name"];
                StringValues header = context.Request.Headers[name];
                return(context.Response.WriteAsync($"header '{name}': '{header}'"));
            }
            if (context.Request.Path.StartsWithSegments("/setCookie"))
            {
                string name  = context.Request.Query["name"];
                string path  = context.Request.Query["path"];
                string value = context.Request.Query["value"];
                if (String.IsNullOrWhiteSpace(value))
                {
                    value = "CookieValue";
                }
                context.Response.Cookies.Append(name, value, new CookieOptions()
                {
                    Path = path
                });
                return(context.Response.WriteAsync($"Cookie set: {name} Path: {path} Value: {value}"));
            }
            if (context.Request.Path.StartsWithSegments("/deleteCookie"))
            {
                string name = context.Request.Query["name"];
                string path = context.Request.Query["path"];
                context.Response.Cookies.Delete(name, new CookieOptions()
                {
                    Path = path
                });
                return(context.Response.WriteAsync($"Cookie delete: {name} Path: {path}"));
            }
            if (context.Request.Path.StartsWithSegments("/aspnetlogs"))
            {
                _logger.LogCritical($"This is a Critical log.");
                _logger.LogError($"This is a Error log.");
                _logger.LogWarning($"This is a Warning log.");
                _logger.LogInformation($"This is a Information log.");
                _logger.LogDebug($"This is a Debug log.");
                _logger.LogTrace($"This is a Trace log.");
                return(context.Response.WriteAsync($"Logs written."));
            }
            if (context.Request.Path.StartsWithSegments("/quit"))
            {
                _lifetime.StopApplication();
                return(context.Response.WriteAsync($"Application is terminating."));
            }
            if (context.Request.Path.StartsWithSegments("/rewriteJSON"))
            {
                if (!HttpMethods.IsPost(context.Request.Method))
                {
                    context.Response.StatusCode = StatusCodes.Status405MethodNotAllowed;
                }
                return(ReadContentThen(context, content => context.Response.WriteAsync(
                                           $"JSON: '{JObject.Parse( content ).ToString( Newtonsoft.Json.Formatting.None )}'")
                                       ));
            }
            if (context.Request.Path.StartsWithSegments("/rewriteXElement"))
            {
                if (!HttpMethods.IsPost(context.Request.Method))
                {
                    context.Response.StatusCode = StatusCodes.Status405MethodNotAllowed;
                }
                return(ReadContentThen(context, content => context.Response.WriteAsync(
                                           $"XElement: '{XElement.Parse( content ).ToString( SaveOptions.DisableFormatting )}'"
                                           )));
            }
            if (context.Request.Path.StartsWithSegments("/bug"))
            {
                throw new Exception("Bug!");
            }
            if (context.Request.Path.StartsWithSegments("/asyncBug"))
            {
                return(AsyncBug());
            }
            if (context.Request.Path.StartsWithSegments("/hiddenAsyncBug"))
            {
                context.Response.StatusCode = StatusCodes.Status202Accepted;
                Task.Delay(100).ContinueWith(t =>
                {
                    throw new Exception("I'm an horrible HiddenAsyncBug!");
                });
                return(context.Response.WriteAsync("Will break the started Task."));
            }
            if (context.Request.Path.StartsWithSegments("/unhandledAppDomainException"))
            {
                context.Response.StatusCode = StatusCodes.Status202Accepted;
                var t = new Thread(() => throw new Exception("I'm an unhandled exception."));
                t.IsBackground = true;
                t.Start();
                return(context.Response.WriteAsync("Will break the started thread."));
            }

            return(_next.Invoke(context));
        }
Ejemplo n.º 13
0
        public async Task <ActionResult> GetInstances(
            string org,
            string appId,
            [FromQuery(Name = "process.currentTask")] string currentTaskId,
            [FromQuery(Name = "process.isComplete")] bool?processIsComplete,
            [FromQuery(Name = "process.isInError")] bool?processIsInError,
            [FromQuery(Name = "process.endState")] string processEndState,
            [FromQuery] string labels,
            [FromQuery] string lastChangedDateTime,
            [FromQuery] string createdDateTime,
            [FromQuery] string visibleDateTime,
            [FromQuery] string dueDateTime,
            string continuationToken,
            int?size)
        {
            int    pageSize = size ?? 100;
            string selfContinuationToken = null;

            if (!string.IsNullOrEmpty(continuationToken))
            {
                selfContinuationToken = continuationToken;
                continuationToken     = HttpUtility.UrlDecode(continuationToken);
            }

            Dictionary <string, StringValues> queryParams = QueryHelpers.ParseQuery(Request.QueryString.Value);

            string host  = $"{Request.Scheme}://{Request.Host.ToUriComponent()}";
            string url   = Request.Path;
            string query = Request.QueryString.Value;

            logger.LogInformation($"uri = {url}{query}");

            try
            {
                InstanceQueryResponse result = await _instanceRepository.GetInstancesOfApplication(queryParams, continuationToken, pageSize);

                if (result.TotalHits == 0)
                {
                    return(NotFound($"Did not find any instances"));
                }

                if (!string.IsNullOrEmpty(result.Exception))
                {
                    return(BadRequest(result.Exception));
                }

                string nextContinuationToken = HttpUtility.UrlEncode(result.ContinuationToken);
                result.ContinuationToken = null;

                HALResponse response = new HALResponse(result);

                if (continuationToken == null)
                {
                    string selfUrl = $"{host}{url}{query}";

                    result.Self = selfUrl;

                    Link selfLink = new Link("self", selfUrl);
                    response.AddLinks(selfLink);
                }
                else
                {
                    string selfQueryString = BuildQueryStringWithOneReplacedParameter(
                        queryParams,
                        "continuationToken",
                        selfContinuationToken);

                    string selfUrl = $"{host}{url}{selfQueryString}";

                    result.Self = selfUrl;

                    Link selfLink = new Link("self", selfUrl);
                    response.AddLinks(selfLink);
                }

                if (nextContinuationToken != null)
                {
                    string nextQueryString = BuildQueryStringWithOneReplacedParameter(
                        queryParams,
                        "continuationToken",
                        nextContinuationToken);

                    string nextUrl = $"{host}{url}{nextQueryString}";

                    result.Next = nextUrl;

                    Link nextLink = new Link("next", nextUrl);
                    response.AddLinks(nextLink);
                }

                // add self links to platform
                result.Instances.ForEach(i => AddSelfLinks(Request, i));

                StringValues acceptHeader = Request.Headers["Accept"];
                if (acceptHeader.Any() && acceptHeader.Contains("application/hal+json"))
                {
                    /* Response object should be expressed as HAL (Hypertext Application Language) with _embedded and _links.
                     * Thus we reset the response object's inline instances, next and self elements.*/

                    response.AddEmbeddedCollection("instances", result.Instances);
                    result.Instances = null;
                    result.Next      = null;
                    result.Self      = null;
                }

                return(Ok(response));
            }
            catch (Exception e)
            {
                logger.LogError("exception", e);
                return(StatusCode(500, $"Unable to perform query due to: {e.Message}"));
            }
        }
Ejemplo n.º 14
0
 public static void SetPageValue(dynamic viewBag, StringValues value)
 {
     viewBag.Page = GetFirstValue(value);
 }
Ejemplo n.º 15
0
 public static void SetFilterValue(dynamic viewBag, StringValues value)
 {
     viewBag.Filter = GetFirstValue(value);
 }
Ejemplo n.º 16
0
 public static void SetDescendingValue(dynamic viewBag, StringValues value)
 {
     viewBag.Descending = GetFirstValue(value);
 }
Ejemplo n.º 17
0
 private static string GetFirstValue(StringValues value)
 {
     return(string.IsNullOrEmpty(value) ? null : value[0]);
 }
Ejemplo n.º 18
0
 public static void SetSortValue(dynamic viewBag, StringValues value)
 {
     viewBag.Sort = GetFirstValue(value);
 }
 public void Add(string key, StringValues value)
 {
     Collection.Add(key, value);
 }
Ejemplo n.º 20
0
        public async Task Headers_IgnoreNullHeaders(string headerName, StringValues headerValue, StringValues expectedValue)
        {
            string address;

            using (Utilities.CreateHttpServer(out address, httpContext =>
            {
                var responseHeaders = httpContext.Response.Headers;
                responseHeaders.Add(headerName, headerValue);
                return(Task.FromResult(0));
            }))
            {
                HttpResponseMessage response = await SendRequestAsync(address);

                response.EnsureSuccessStatusCode();
                var headers = response.Headers;

                if (expectedValue.Count == 0)
                {
                    Assert.False(headers.Contains(headerName));
                }
                else
                {
                    Assert.True(headers.Contains(headerName));
                    Assert.Equal(headers.GetValues(headerName), expectedValue);
                }
            }
        }
Ejemplo n.º 21
0
 public Hamburguer(StringValues Nome, double Preco)
 {
     this.Nome  = Nome;
     this.Preco = Preco;
 }
        public async Task ConnectionNotClosedWhenClientSatisfiesMinimumDataRateGivenLargeResponseHeaders()
        {
            var headerSize         = 1024 * 1024; // 1 MB for each header value
            var headerCount        = 64;          // 64 MB of headers per response
            var requestCount       = 4;           // Minimum of 256 MB of total response headers
            var headerValue        = new string('a', headerSize);
            var headerStringValues = new StringValues(Enumerable.Repeat(headerValue, headerCount).ToArray());

            var requestAborted   = false;
            var mockKestrelTrace = new Mock <IKestrelTrace>();

            var testContext = new TestServiceContext(LoggerFactory, mockKestrelTrace.Object)
            {
                ServerOptions =
                {
                    Limits                  =
                    {
                        MinResponseDataRate = new MinDataRate(bytesPerSecond: 240, gracePeriod: TimeSpan.FromSeconds(2))
                    }
                }
            };

            testContext.InitializeHeartbeat();
            var dateHeaderValueManager = new DateHeaderValueManager();

            dateHeaderValueManager.OnHeartbeat(DateTimeOffset.MinValue);
            testContext.DateHeaderValueManager = dateHeaderValueManager;

            var listenOptions = new ListenOptions(new IPEndPoint(IPAddress.Loopback, 0));

            async Task App(HttpContext context)
            {
                context.RequestAborted.Register(() =>
                {
                    requestAborted = true;
                });

                context.Response.Headers[$"X-Custom-Header"] = headerStringValues;
                context.Response.ContentLength = 0;

                await context.Response.BodyWriter.FlushAsync();
            }

            using (var server = new TestServer(App, testContext, listenOptions))
            {
                using (var connection = server.CreateConnection())
                {
                    for (var i = 0; i < requestCount - 1; i++)
                    {
                        await connection.Send(
                            "GET / HTTP/1.1",
                            "Host:",
                            "",
                            "");
                    }

                    await connection.Send(
                        "GET / HTTP/1.1",
                        "Host:",
                        "",
                        "");

                    await connection.Receive(
                        "HTTP/1.1 200 OK",
                        $"Date: {dateHeaderValueManager.GetDateHeaderValues().String}");

                    var minResponseSize    = headerSize * headerCount;
                    var minTotalOutputSize = requestCount * minResponseSize;

                    // Make sure consuming a single set of response headers exceeds the 2 second timeout.
                    var targetBytesPerSecond = minResponseSize / 4;

                    // expectedBytes was determined by manual testing. A constant Date header is used, so this shouldn't change unless
                    // the response header writing logic itself changes.
                    await AssertBytesReceivedAtTargetRate(connection.Stream, expectedBytes : 268_439_596, targetBytesPerSecond);

                    connection.ShutdownSend();
                    await connection.WaitForConnectionClose();
                }

                await server.StopAsync();
            }

            mockKestrelTrace.Verify(t => t.ResponseMinimumDataRateNotSatisfied(It.IsAny <string>(), It.IsAny <string>()), Times.Never());
            mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny <string>()), Times.Once());
            Assert.False(requestAborted);
        }
 internal static ControllerBase SetHeader(this ControllerBase controller, string name, StringValues values)
 {
     controller.Response.Headers[name] = values;
     return(controller);
 }
Ejemplo n.º 24
0
        protected virtual string ParseVendorAttributes(IFormCollection form)
        {
            if (form == null)
            {
                throw new ArgumentNullException(nameof(form));
            }

            var attributesXml    = "";
            var vendorAttributes = _vendorAttributeService.GetAllVendorAttributes();

            foreach (var attribute in vendorAttributes)
            {
                var controlId = $"vendor_attribute_{attribute.Id}";
                switch (attribute.AttributeControlType)
                {
                case AttributeControlType.DropdownList:
                case AttributeControlType.RadioList:
                {
                    var ctrlAttributes = form[controlId];
                    if (!StringValues.IsNullOrEmpty(ctrlAttributes))
                    {
                        var selectedAttributeId = int.Parse(ctrlAttributes);
                        if (selectedAttributeId > 0)
                        {
                            attributesXml = _vendorAttributeParser.AddVendorAttribute(attributesXml,
                                                                                      attribute, selectedAttributeId.ToString());
                        }
                    }
                }
                break;

                case AttributeControlType.Checkboxes:
                {
                    var cblAttributes = form[controlId];
                    if (!StringValues.IsNullOrEmpty(cblAttributes))
                    {
                        foreach (var item in cblAttributes.ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                        {
                            var selectedAttributeId = int.Parse(item);
                            if (selectedAttributeId > 0)
                            {
                                attributesXml = _vendorAttributeParser.AddVendorAttribute(attributesXml,
                                                                                          attribute, selectedAttributeId.ToString());
                            }
                        }
                    }
                }
                break;

                case AttributeControlType.ReadonlyCheckboxes:
                {
                    //load read-only (already server-side selected) values
                    var attributeValues = _vendorAttributeService.GetVendorAttributeValues(attribute.Id);
                    foreach (var selectedAttributeId in attributeValues
                             .Where(v => v.IsPreSelected)
                             .Select(v => v.Id)
                             .ToList())
                    {
                        attributesXml = _vendorAttributeParser.AddVendorAttribute(attributesXml,
                                                                                  attribute, selectedAttributeId.ToString());
                    }
                }
                break;

                case AttributeControlType.TextBox:
                case AttributeControlType.MultilineTextbox:
                {
                    var ctrlAttributes = form[controlId];
                    if (!StringValues.IsNullOrEmpty(ctrlAttributes))
                    {
                        var enteredText = ctrlAttributes.ToString().Trim();
                        attributesXml = _vendorAttributeParser.AddVendorAttribute(attributesXml,
                                                                                  attribute, enteredText);
                    }
                }
                break;

                case AttributeControlType.Datepicker:
                case AttributeControlType.ColorSquares:
                case AttributeControlType.ImageSquares:
                case AttributeControlType.FileUpload:
                //not supported vendor attributes
                default:
                    break;
                }
            }

            return(attributesXml);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Deletes the cookie with the given key by setting an expired state. If a matching chunked cookie exists on
        /// the request, delete each chunk.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="key"></param>
        /// <param name="options"></param>
        public void DeleteCookie(HttpContext context, string key, CookieOptions options)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var keys = new List <string>();

            keys.Add(key + "=");

            var requestCookie = context.Request.Cookies[key];
            var chunks        = ParseChunksCount(requestCookie);

            if (chunks > 0)
            {
                for (int i = 1; i <= chunks + 1; i++)
                {
                    var subkey = key + ChunkKeySuffix + i.ToString(CultureInfo.InvariantCulture);
                    keys.Add(subkey + "=");
                }
            }

            var domainHasValue = !string.IsNullOrEmpty(options.Domain);
            var pathHasValue   = !string.IsNullOrEmpty(options.Path);

            Func <string, bool> rejectPredicate;
            Func <string, bool> predicate = value => keys.Any(k => value.StartsWith(k, StringComparison.OrdinalIgnoreCase));

            if (domainHasValue)
            {
                rejectPredicate = value => predicate(value) && value.IndexOf("domain=" + options.Domain, StringComparison.OrdinalIgnoreCase) != -1;
            }
            else if (pathHasValue)
            {
                rejectPredicate = value => predicate(value) && value.IndexOf("path=" + options.Path, StringComparison.OrdinalIgnoreCase) != -1;
            }
            else
            {
                rejectPredicate = value => predicate(value);
            }

            var responseHeaders = context.Response.Headers;
            var existingValues  = responseHeaders[HeaderNames.SetCookie];

            if (!StringValues.IsNullOrEmpty(existingValues))
            {
                responseHeaders[HeaderNames.SetCookie] = existingValues.Where(value => !rejectPredicate(value)).ToArray();
            }

            AppendResponseCookie(
                context,
                key,
                string.Empty,
                new CookieOptions()
            {
                Path     = options.Path,
                Domain   = options.Domain,
                SameSite = options.SameSite,
                Expires  = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc),
            });

            for (int i = 1; i <= chunks; i++)
            {
                AppendResponseCookie(
                    context,
                    key + "C" + i.ToString(CultureInfo.InvariantCulture),
                    string.Empty,
                    new CookieOptions()
                {
                    Path     = options.Path,
                    Domain   = options.Domain,
                    SameSite = options.SameSite,
                    Expires  = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc),
                });
            }
        }
Ejemplo n.º 26
0
 public static StringValues Item(this HttpRequest httpRequest, string key, StringValues defaultValue = default) => httpRequest.Item(key, new HttpRequestItemOptions {
     DefaultValue = defaultValue
 });
Ejemplo n.º 27
0
 public QueryableHandlerExpression(object queryableHandler, StringValues parameterValue)
 {
     _queryableHandler = queryableHandler ?? throw new ArgumentNullException(nameof(queryableHandler));
     _parameterValue   = parameterValue;
 }
Ejemplo n.º 28
0
 protected bool TryGetUnknown(string key, ref StringValues value) => MaybeUnknown?.TryGetValue(key, out value) ?? false;
 private void SetHeader(string key, StringValues value)
 {
     _headers[key] = new HeaderValue
     {
         Value = value
     };
 }
Ejemplo n.º 30
0
 /// <summary>
 /// Create a new cache id representing an object
 /// </summary>
 /// <param name="category">Category of the object</param>
 /// <param name="hashcode">Hash of object to lookup</param>
 /// <param name="etagHeader">Requested etag header</param>
 public CacheId(string category, int hashcode, StringValues etagHeader = default)
 {
     Category   = category;
     Hashcode   = hashcode;
     ETagHeader = etagHeader;
 }
        public bool TryGetValue(string key, out StringValues value)
        {
            HeaderValue headerValue;
            if (_headers.TryGetValue(key, out headerValue))
            {
                value = headerValue.GetValue();
                return true;
            }

            return false;
        }
        protected override void SetValueFast(string key, StringValues value)
        {
            switch(key.Length)
            {
                case 13:
                    {
                        if ("Cache-Control".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 1L;
                            _CacheControl = value;
                            return;
                        }

                        if ("Content-Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 131072L;
                            _ContentRange = value;
                            return;
                        }

                        if ("Last-Modified".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 524288L;
                            _LastModified = value;
                            return;
                        }

                        if ("Authorization".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 16777216L;
                            _Authorization = value;
                            return;
                        }

                        if ("If-None-Match".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 2147483648L;
                            _IfNoneMatch = value;
                            return;
                        }
                    }
                    break;

                case 10:
                    {
                        if ("Connection".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 2L;
                            _Connection = value;
                            return;
                        }

                        if ("Keep-Alive".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 8L;
                            _KeepAlive = value;
                            return;
                        }

                        if ("User-Agent".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 1099511627776L;
                            _UserAgent = value;
                            return;
                        }
                    }
                    break;

                case 4:
                    {
                        if ("Date".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 4L;
                            _Date = value;
                            return;
                        }

                        if ("From".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 134217728L;
                            _From = value;
                            return;
                        }

                        if ("Host".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 268435456L;
                            _Host = value;
                            return;
                        }
                    }
                    break;

                case 6:
                    {
                        if ("Pragma".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 16L;
                            _Pragma = value;
                            return;
                        }

                        if ("Accept".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 1048576L;
                            _Accept = value;
                            return;
                        }

                        if ("Cookie".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 33554432L;
                            _Cookie = value;
                            return;
                        }

                        if ("Expect".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 67108864L;
                            _Expect = value;
                            return;
                        }
                    }
                    break;

                case 7:
                    {
                        if ("Trailer".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 32L;
                            _Trailer = value;
                            return;
                        }

                        if ("Upgrade".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 128L;
                            _Upgrade = value;
                            return;
                        }

                        if ("Warning".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 512L;
                            _Warning = value;
                            return;
                        }

                        if ("Expires".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 262144L;
                            _Expires = value;
                            return;
                        }

                        if ("Referer".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 68719476736L;
                            _Referer = value;
                            return;
                        }
                    }
                    break;

                case 17:
                    {
                        if ("Transfer-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 64L;
                            _TransferEncoding = value;
                            return;
                        }

                        if ("If-Modified-Since".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 1073741824L;
                            _IfModifiedSince = value;
                            return;
                        }
                    }
                    break;

                case 3:
                    {
                        if ("Via".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 256L;
                            _Via = value;
                            return;
                        }
                    }
                    break;

                case 5:
                    {
                        if ("Allow".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 1024L;
                            _Allow = value;
                            return;
                        }

                        if ("Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 137438953472L;
                            _Range = value;
                            return;
                        }
                    }
                    break;

                case 14:
                    {
                        if ("Content-Length".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 2048L;
                            _ContentLength = value;
                            return;
                        }

                        if ("Accept-Charset".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 2097152L;
                            _AcceptCharset = value;
                            return;
                        }
                    }
                    break;

                case 12:
                    {
                        if ("Content-Type".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 4096L;
                            _ContentType = value;
                            return;
                        }

                        if ("Max-Forwards".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 17179869184L;
                            _MaxForwards = value;
                            return;
                        }
                    }
                    break;

                case 16:
                    {
                        if ("Content-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 8192L;
                            _ContentEncoding = value;
                            return;
                        }

                        if ("Content-Language".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 16384L;
                            _ContentLanguage = value;
                            return;
                        }

                        if ("Content-Location".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 32768L;
                            _ContentLocation = value;
                            return;
                        }
                    }
                    break;

                case 11:
                    {
                        if ("Content-MD5".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 65536L;
                            _ContentMD5 = value;
                            return;
                        }
                    }
                    break;

                case 15:
                    {
                        if ("Accept-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 4194304L;
                            _AcceptEncoding = value;
                            return;
                        }

                        if ("Accept-Language".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 8388608L;
                            _AcceptLanguage = value;
                            return;
                        }
                    }
                    break;

                case 8:
                    {
                        if ("If-Match".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 536870912L;
                            _IfMatch = value;
                            return;
                        }

                        if ("If-Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 4294967296L;
                            _IfRange = value;
                            return;
                        }
                    }
                    break;

                case 19:
                    {
                        if ("If-Unmodified-Since".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 8589934592L;
                            _IfUnmodifiedSince = value;
                            return;
                        }

                        if ("Proxy-Authorization".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 34359738368L;
                            _ProxyAuthorization = value;
                            return;
                        }
                    }
                    break;

                case 2:
                    {
                        if ("TE".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 274877906944L;
                            _TE = value;
                            return;
                        }
                    }
                    break;

                case 9:
                    {
                        if ("Translate".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 549755813888L;
                            _Translate = value;
                            return;
                        }
                    }
                    break;
            }
            Unknown[key] = value;
        }
        protected override void ClearFast()
        {
            _bits = 0;

            _CacheControl = StringValues.Empty;
            _Connection = StringValues.Empty;
            _Date = StringValues.Empty;
            _KeepAlive = StringValues.Empty;
            _Pragma = StringValues.Empty;
            _Trailer = StringValues.Empty;
            _TransferEncoding = StringValues.Empty;
            _Upgrade = StringValues.Empty;
            _Via = StringValues.Empty;
            _Warning = StringValues.Empty;
            _Allow = StringValues.Empty;
            _ContentLength = StringValues.Empty;
            _ContentType = StringValues.Empty;
            _ContentEncoding = StringValues.Empty;
            _ContentLanguage = StringValues.Empty;
            _ContentLocation = StringValues.Empty;
            _ContentMD5 = StringValues.Empty;
            _ContentRange = StringValues.Empty;
            _Expires = StringValues.Empty;
            _LastModified = StringValues.Empty;
            _AcceptRanges = StringValues.Empty;
            _Age = StringValues.Empty;
            _ETag = StringValues.Empty;
            _Location = StringValues.Empty;
            _ProxyAutheticate = StringValues.Empty;
            _RetryAfter = StringValues.Empty;
            _Server = StringValues.Empty;
            _SetCookie = StringValues.Empty;
            _Vary = StringValues.Empty;
            _WWWAuthenticate = StringValues.Empty;
            MaybeUnknown?.Clear();
        }
Ejemplo n.º 34
0
        private void GetDocumentsById(DocumentsOperationContext context, StringValues ids, Transformer transformer, bool metadataOnly)
        {
            var         includePaths = HttpContext.Request.Query["include"];
            var         documents    = new List <Document>(ids.Count);
            List <long> etags        = null;
            var         includes     = new List <Document>(includePaths.Count * ids.Count);
            var         includeDocs  = new IncludeDocumentsCommand(Database.DocumentsStorage, context, includePaths);

            foreach (var id in ids)
            {
                var document = Database.DocumentsStorage.Get(context, id);

                documents.Add(document);
                includeDocs.Gather(document);
            }

            IEnumerable <Document> documentsToWrite;

            if (transformer != null)
            {
                var transformerParameters = GetTransformerParameters(context);

                using (var scope = transformer.OpenTransformationScope(transformerParameters, includeDocs, Database.DocumentsStorage, Database.TransformerStore, context))
                {
                    documentsToWrite = scope.Transform(documents).ToList();
                    etags            = scope.LoadedDocumentEtags;
                }
            }
            else
            {
                documentsToWrite = documents;
            }

            includeDocs.Fill(includes);

            var actualEtag = ComputeEtagsFor(documents, includes, etags);

            if (transformer != null)
            {
                actualEtag ^= transformer.Hash;
            }

            var etag = GetLongFromHeaders("If-None-Match");

            if (etag == actualEtag)
            {
                HttpContext.Response.StatusCode = 304;
                return;
            }

            HttpContext.Response.Headers[Constants.MetadataEtagField] = "\"" + actualEtag + "\"";

            if (HttpContext.Request.Query["blittable"] == "true")
            {
                WriteDocumentsBlittable(context, documentsToWrite, includes);
            }
            else
            {
                WriteDocumentsJson(context, metadataOnly, documentsToWrite, includeDocs, includes);
            }
        }
Ejemplo n.º 35
0
 public bool TryGetValue(string key, out StringValues value)
 {
     value = default(StringValues);
     return(false);
 }
 public void Add(string key, StringValues value)
 {
     SetHeader(key, value);
 }
Ejemplo n.º 37
0
 public void Add(string key, StringValues value)
 {
     SetHeader(key, value);
 }
        protected override void ClearFast()
        {
            _bits = 0;

            _CacheControl = StringValues.Empty;
            _Connection = StringValues.Empty;
            _Date = StringValues.Empty;
            _KeepAlive = StringValues.Empty;
            _Pragma = StringValues.Empty;
            _Trailer = StringValues.Empty;
            _TransferEncoding = StringValues.Empty;
            _Upgrade = StringValues.Empty;
            _Via = StringValues.Empty;
            _Warning = StringValues.Empty;
            _Allow = StringValues.Empty;
            _ContentLength = StringValues.Empty;
            _ContentType = StringValues.Empty;
            _ContentEncoding = StringValues.Empty;
            _ContentLanguage = StringValues.Empty;
            _ContentLocation = StringValues.Empty;
            _ContentMD5 = StringValues.Empty;
            _ContentRange = StringValues.Empty;
            _Expires = StringValues.Empty;
            _LastModified = StringValues.Empty;
            _Accept = StringValues.Empty;
            _AcceptCharset = StringValues.Empty;
            _AcceptEncoding = StringValues.Empty;
            _AcceptLanguage = StringValues.Empty;
            _Authorization = StringValues.Empty;
            _Cookie = StringValues.Empty;
            _Expect = StringValues.Empty;
            _From = StringValues.Empty;
            _Host = StringValues.Empty;
            _IfMatch = StringValues.Empty;
            _IfModifiedSince = StringValues.Empty;
            _IfNoneMatch = StringValues.Empty;
            _IfRange = StringValues.Empty;
            _IfUnmodifiedSince = StringValues.Empty;
            _MaxForwards = StringValues.Empty;
            _ProxyAuthorization = StringValues.Empty;
            _Referer = StringValues.Empty;
            _Range = StringValues.Empty;
            _TE = StringValues.Empty;
            _Translate = StringValues.Empty;
            _UserAgent = StringValues.Empty;
            MaybeUnknown?.Clear();
        }
 public static void LogCopyingFileRange(this ILogger logger, StringValues range, string path, string user)
 {
     _logCopyingFileRange(logger, range, path, user, null);
 }
        protected override bool TryGetValueFast(string key, out StringValues value)
        {
            switch(key.Length)
            {
                case 13:
                    {
                        if ("Cache-Control".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 1L) != 0))
                            {
                                value = _CacheControl;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Content-Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 131072L) != 0))
                            {
                                value = _ContentRange;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Last-Modified".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 524288L) != 0))
                            {
                                value = _LastModified;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Authorization".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 16777216L) != 0))
                            {
                                value = _Authorization;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("If-None-Match".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 2147483648L) != 0))
                            {
                                value = _IfNoneMatch;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 10:
                    {
                        if ("Connection".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 2L) != 0))
                            {
                                value = _Connection;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Keep-Alive".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 8L) != 0))
                            {
                                value = _KeepAlive;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("User-Agent".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 1099511627776L) != 0))
                            {
                                value = _UserAgent;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 4:
                    {
                        if ("Date".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 4L) != 0))
                            {
                                value = _Date;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("From".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 134217728L) != 0))
                            {
                                value = _From;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Host".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 268435456L) != 0))
                            {
                                value = _Host;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 6:
                    {
                        if ("Pragma".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 16L) != 0))
                            {
                                value = _Pragma;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Accept".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 1048576L) != 0))
                            {
                                value = _Accept;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Cookie".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 33554432L) != 0))
                            {
                                value = _Cookie;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Expect".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 67108864L) != 0))
                            {
                                value = _Expect;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 7:
                    {
                        if ("Trailer".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 32L) != 0))
                            {
                                value = _Trailer;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Upgrade".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 128L) != 0))
                            {
                                value = _Upgrade;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Warning".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 512L) != 0))
                            {
                                value = _Warning;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Expires".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 262144L) != 0))
                            {
                                value = _Expires;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Referer".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 68719476736L) != 0))
                            {
                                value = _Referer;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 17:
                    {
                        if ("Transfer-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 64L) != 0))
                            {
                                value = _TransferEncoding;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("If-Modified-Since".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 1073741824L) != 0))
                            {
                                value = _IfModifiedSince;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 3:
                    {
                        if ("Via".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 256L) != 0))
                            {
                                value = _Via;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 5:
                    {
                        if ("Allow".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 1024L) != 0))
                            {
                                value = _Allow;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 137438953472L) != 0))
                            {
                                value = _Range;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 14:
                    {
                        if ("Content-Length".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 2048L) != 0))
                            {
                                value = _ContentLength;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Accept-Charset".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 2097152L) != 0))
                            {
                                value = _AcceptCharset;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 12:
                    {
                        if ("Content-Type".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 4096L) != 0))
                            {
                                value = _ContentType;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Max-Forwards".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 17179869184L) != 0))
                            {
                                value = _MaxForwards;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 16:
                    {
                        if ("Content-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 8192L) != 0))
                            {
                                value = _ContentEncoding;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Content-Language".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 16384L) != 0))
                            {
                                value = _ContentLanguage;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Content-Location".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 32768L) != 0))
                            {
                                value = _ContentLocation;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 11:
                    {
                        if ("Content-MD5".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 65536L) != 0))
                            {
                                value = _ContentMD5;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 15:
                    {
                        if ("Accept-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 4194304L) != 0))
                            {
                                value = _AcceptEncoding;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Accept-Language".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 8388608L) != 0))
                            {
                                value = _AcceptLanguage;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 8:
                    {
                        if ("If-Match".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 536870912L) != 0))
                            {
                                value = _IfMatch;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("If-Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 4294967296L) != 0))
                            {
                                value = _IfRange;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 19:
                    {
                        if ("If-Unmodified-Since".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 8589934592L) != 0))
                            {
                                value = _IfUnmodifiedSince;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }

                        if ("Proxy-Authorization".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 34359738368L) != 0))
                            {
                                value = _ProxyAuthorization;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 2:
                    {
                        if ("TE".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 274877906944L) != 0))
                            {
                                value = _TE;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 9:
                    {
                        if ("Translate".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            if (((_bits & 549755813888L) != 0))
                            {
                                value = _Translate;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;
            }
            value = StringValues.Empty;
            return MaybeUnknown?.TryGetValue(key, out value) ?? false;
        }
Ejemplo n.º 41
0
        public static string GetBestMatch(List <string> mimeTypes, StringValues stringValues)
        {
            var requestMime = string.Join(", ", stringValues.ToArray() ?? new string[] {}).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(a => a.Trim());

            return(requestMime.FirstOrDefault(a => mimeTypes.Select(Normalize).Any(b => _equal(a, b)))?.ToString());
        }
        protected override void SetValueFast(string key, StringValues value)
        {
            switch(key.Length)
            {
                case 13:
                    {
                        if ("Cache-Control".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 1L;
                            _CacheControl = value;
                            return;
                        }

                        if ("Content-Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 131072L;
                            _ContentRange = value;
                            return;
                        }

                        if ("Last-Modified".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 524288L;
                            _LastModified = value;
                            return;
                        }

                        if ("Accept-Ranges".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 1048576L;
                            _AcceptRanges = value;
                            return;
                        }
                    }
                    break;

                case 10:
                    {
                        if ("Connection".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 2L;
                            _Connection = value;
                            return;
                        }

                        if ("Keep-Alive".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 8L;
                            _KeepAlive = value;
                            return;
                        }

                        if ("Set-Cookie".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 134217728L;
                            _SetCookie = value;
                            return;
                        }
                    }
                    break;

                case 4:
                    {
                        if ("Date".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 4L;
                            _Date = value;
                            return;
                        }

                        if ("ETag".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 4194304L;
                            _ETag = value;
                            return;
                        }

                        if ("Vary".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 268435456L;
                            _Vary = value;
                            return;
                        }
                    }
                    break;

                case 6:
                    {
                        if ("Pragma".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 16L;
                            _Pragma = value;
                            return;
                        }

                        if ("Server".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 67108864L;
                            _Server = value;
                            return;
                        }
                    }
                    break;

                case 7:
                    {
                        if ("Trailer".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 32L;
                            _Trailer = value;
                            return;
                        }

                        if ("Upgrade".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 128L;
                            _Upgrade = value;
                            return;
                        }

                        if ("Warning".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 512L;
                            _Warning = value;
                            return;
                        }

                        if ("Expires".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 262144L;
                            _Expires = value;
                            return;
                        }
                    }
                    break;

                case 17:
                    {
                        if ("Transfer-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 64L;
                            _TransferEncoding = value;
                            return;
                        }

                        if ("Proxy-Autheticate".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 16777216L;
                            _ProxyAutheticate = value;
                            return;
                        }
                    }
                    break;

                case 3:
                    {
                        if ("Via".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 256L;
                            _Via = value;
                            return;
                        }

                        if ("Age".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 2097152L;
                            _Age = value;
                            return;
                        }
                    }
                    break;

                case 5:
                    {
                        if ("Allow".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 1024L;
                            _Allow = value;
                            return;
                        }
                    }
                    break;

                case 14:
                    {
                        if ("Content-Length".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 2048L;
                            _ContentLength = value;
                            return;
                        }
                    }
                    break;

                case 12:
                    {
                        if ("Content-Type".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 4096L;
                            _ContentType = value;
                            return;
                        }
                    }
                    break;

                case 16:
                    {
                        if ("Content-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 8192L;
                            _ContentEncoding = value;
                            return;
                        }

                        if ("Content-Language".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 16384L;
                            _ContentLanguage = value;
                            return;
                        }

                        if ("Content-Location".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 32768L;
                            _ContentLocation = value;
                            return;
                        }

                        if ("WWW-Authenticate".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 536870912L;
                            _WWWAuthenticate = value;
                            return;
                        }
                    }
                    break;

                case 11:
                    {
                        if ("Content-MD5".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 65536L;
                            _ContentMD5 = value;
                            return;
                        }

                        if ("Retry-After".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 33554432L;
                            _RetryAfter = value;
                            return;
                        }
                    }
                    break;

                case 8:
                    {
                        if ("Location".Equals(key, StringComparison.OrdinalIgnoreCase))
                        {
                            _bits |= 8388608L;
                            _Location = value;
                            return;
                        }
                    }
                    break;
            }
            Unknown[key] = value;
        }
Ejemplo n.º 43
0
 /// <summary>
 /// Sets the forwarded for value to a <see cref="LogEntry"/>.
 /// </summary>
 /// <param name="logEntry">The log entry.</param>
 /// <param name="forwardedFor">The forwarded for value.</param>
 /// <returns>The same log entry.</returns>
 public static LogEntry SetForwardedFor(this LogEntry logEntry, StringValues forwardedFor) =>
 logEntry.SetForwardedFor(forwardedFor.ToArray());
 public unsafe void Append(byte[] keyBytes, int keyOffset, int keyLength, string value)
 {
     fixed (byte* ptr = &keyBytes[keyOffset]) 
     { 
         var pUB = ptr; 
         var pUL = (ulong*)pUB; 
         var pUI = (uint*)pUB; 
         var pUS = (ushort*)pUB;
         switch (keyLength)
         {
             case 13:
                 {
                     if ((((pUL[0] & 16131893727263186911uL) == 5711458528024281411uL) && ((pUI[2] & 3755991007u) == 1330795598u) && ((pUB[12] & 223u) == 76u))) 
                     {
                         if (((_bits & 1L) != 0))
                         {
                             _CacheControl = AppendValue(_CacheControl, value);
                         }
                         else
                         {
                             _bits |= 1L;
                             _CacheControl = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUI[2] & 3755991007u) == 1196310866u) && ((pUB[12] & 223u) == 69u))) 
                     {
                         if (((_bits & 131072L) != 0))
                         {
                             _ContentRange = AppendValue(_ContentRange, value);
                         }
                         else
                         {
                             _bits |= 131072L;
                             _ContentRange = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858680330051551uL) == 4922237774822850892uL) && ((pUI[2] & 3755991007u) == 1162430025u) && ((pUB[12] & 223u) == 68u))) 
                     {
                         if (((_bits & 524288L) != 0))
                         {
                             _LastModified = AppendValue(_LastModified, value);
                         }
                         else
                         {
                             _bits |= 524288L;
                             _LastModified = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16140865742145839071uL) == 5921481788798223169uL) && ((pUI[2] & 3755991007u) == 1162300993u) && ((pUB[12] & 223u) == 83u))) 
                     {
                         if (((_bits & 1048576L) != 0))
                         {
                             _AcceptRanges = AppendValue(_AcceptRanges, value);
                         }
                         else
                         {
                             _bits |= 1048576L;
                             _AcceptRanges = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 10:
                 {
                     if ((((pUL[0] & 16131858542891098079uL) == 5283922227757993795uL) && ((pUS[4] & 57311u) == 20047u))) 
                     {
                         if (((_bits & 2L) != 0))
                         {
                             _Connection = AppendValue(_Connection, value);
                         }
                         else
                         {
                             _bits |= 2L;
                             _Connection = new StringValues(value);
                             _rawConnection = null;
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858680330051551uL) == 5281668125874799947uL) && ((pUS[4] & 57311u) == 17750u))) 
                     {
                         if (((_bits & 8L) != 0))
                         {
                             _KeepAlive = AppendValue(_KeepAlive, value);
                         }
                         else
                         {
                             _bits |= 8L;
                             _KeepAlive = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858543427968991uL) == 5426643225946637651uL) && ((pUS[4] & 57311u) == 17737u))) 
                     {
                         if (((_bits & 134217728L) != 0))
                         {
                             _SetCookie = AppendValue(_SetCookie, value);
                         }
                         else
                         {
                             _bits |= 134217728L;
                             _SetCookie = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 4:
                 {
                     if ((((pUI[0] & 3755991007u) == 1163149636u))) 
                     {
                         if (((_bits & 4L) != 0))
                         {
                             _Date = AppendValue(_Date, value);
                         }
                         else
                         {
                             _bits |= 4L;
                             _Date = new StringValues(value);
                             _rawDate = null;
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1195463749u))) 
                     {
                         if (((_bits & 4194304L) != 0))
                         {
                             _ETag = AppendValue(_ETag, value);
                         }
                         else
                         {
                             _bits |= 4194304L;
                             _ETag = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1498562902u))) 
                     {
                         if (((_bits & 268435456L) != 0))
                         {
                             _Vary = AppendValue(_Vary, value);
                         }
                         else
                         {
                             _bits |= 268435456L;
                             _Vary = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 6:
                 {
                     if ((((pUI[0] & 3755991007u) == 1195463248u) && ((pUS[2] & 57311u) == 16717u))) 
                     {
                         if (((_bits & 16L) != 0))
                         {
                             _Pragma = AppendValue(_Pragma, value);
                         }
                         else
                         {
                             _bits |= 16L;
                             _Pragma = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1448232275u) && ((pUS[2] & 57311u) == 21061u))) 
                     {
                         if (((_bits & 67108864L) != 0))
                         {
                             _Server = AppendValue(_Server, value);
                         }
                         else
                         {
                             _bits |= 67108864L;
                             _Server = new StringValues(value);
                             _rawServer = null;
                         }
                         return;
                     }
                 }
                 break;
         
             case 7:
                 {
                     if ((((pUI[0] & 3755991007u) == 1229017684u) && ((pUS[2] & 57311u) == 17740u) && ((pUB[6] & 223u) == 82u))) 
                     {
                         if (((_bits & 32L) != 0))
                         {
                             _Trailer = AppendValue(_Trailer, value);
                         }
                         else
                         {
                             _bits |= 32L;
                             _Trailer = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1380405333u) && ((pUS[2] & 57311u) == 17473u) && ((pUB[6] & 223u) == 69u))) 
                     {
                         if (((_bits & 128L) != 0))
                         {
                             _Upgrade = AppendValue(_Upgrade, value);
                         }
                         else
                         {
                             _bits |= 128L;
                             _Upgrade = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1314013527u) && ((pUS[2] & 57311u) == 20041u) && ((pUB[6] & 223u) == 71u))) 
                     {
                         if (((_bits & 512L) != 0))
                         {
                             _Warning = AppendValue(_Warning, value);
                         }
                         else
                         {
                             _bits |= 512L;
                             _Warning = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1230002245u) && ((pUS[2] & 57311u) == 17746u) && ((pUB[6] & 223u) == 83u))) 
                     {
                         if (((_bits & 262144L) != 0))
                         {
                             _Expires = AppendValue(_Expires, value);
                         }
                         else
                         {
                             _bits |= 262144L;
                             _Expires = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 17:
                 {
                     if ((((pUL[0] & 16131858542891098079uL) == 5928221808112259668uL) && ((pUL[1] & 16131858542891098111uL) == 5641115115480565037uL) && ((pUB[16] & 223u) == 71u))) 
                     {
                         if (((_bits & 64L) != 0))
                         {
                             _TransferEncoding = AppendValue(_TransferEncoding, value);
                         }
                         else
                         {
                             _bits |= 64L;
                             _TransferEncoding = new StringValues(value);
                             _rawTransferEncoding = null;
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131893727263186911uL) == 6143241228466999888uL) && ((pUL[1] & 16131858542891098079uL) == 6071207754897639508uL) && ((pUB[16] & 223u) == 69u))) 
                     {
                         if (((_bits & 16777216L) != 0))
                         {
                             _ProxyAutheticate = AppendValue(_ProxyAutheticate, value);
                         }
                         else
                         {
                             _bits |= 16777216L;
                             _ProxyAutheticate = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 3:
                 {
                     if ((((pUS[0] & 57311u) == 18774u) && ((pUB[2] & 223u) == 65u))) 
                     {
                         if (((_bits & 256L) != 0))
                         {
                             _Via = AppendValue(_Via, value);
                         }
                         else
                         {
                             _bits |= 256L;
                             _Via = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUS[0] & 57311u) == 18241u) && ((pUB[2] & 223u) == 69u))) 
                     {
                         if (((_bits & 2097152L) != 0))
                         {
                             _Age = AppendValue(_Age, value);
                         }
                         else
                         {
                             _bits |= 2097152L;
                             _Age = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 5:
                 {
                     if ((((pUI[0] & 3755991007u) == 1330400321u) && ((pUB[4] & 223u) == 87u))) 
                     {
                         if (((_bits & 1024L) != 0))
                         {
                             _Allow = AppendValue(_Allow, value);
                         }
                         else
                         {
                             _bits |= 1024L;
                             _Allow = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 14:
                 {
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUI[2] & 3755991007u) == 1196311884u) && ((pUS[6] & 57311u) == 18516u))) 
                     {
                         if (((_bits & 2048L) != 0))
                         {
                             _ContentLength = AppendValue(_ContentLength, value);
                         }
                         else
                         {
                             _bits |= 2048L;
                             _ContentLength = new StringValues(value);
                             _rawContentLength = null;
                         }
                         return;
                     }
                 }
                 break;
         
             case 12:
                 {
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUI[2] & 3755991007u) == 1162893652u))) 
                     {
                         if (((_bits & 4096L) != 0))
                         {
                             _ContentType = AppendValue(_ContentType, value);
                         }
                         else
                         {
                             _bits |= 4096L;
                             _ContentType = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 16:
                 {
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUL[1] & 16131858542891098079uL) == 5138124782612729413uL))) 
                     {
                         if (((_bits & 8192L) != 0))
                         {
                             _ContentEncoding = AppendValue(_ContentEncoding, value);
                         }
                         else
                         {
                             _bits |= 8192L;
                             _ContentEncoding = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUL[1] & 16131858542891098079uL) == 4992030546487820620uL))) 
                     {
                         if (((_bits & 16384L) != 0))
                         {
                             _ContentLanguage = AppendValue(_ContentLanguage, value);
                         }
                         else
                         {
                             _bits |= 16384L;
                             _ContentLanguage = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUL[1] & 16131858542891098079uL) == 5642809484339531596uL))) 
                     {
                         if (((_bits & 32768L) != 0))
                         {
                             _ContentLocation = AppendValue(_ContentLocation, value);
                         }
                         else
                         {
                             _bits |= 32768L;
                             _ContentLocation = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858543427968991uL) == 5211884407196440407uL) && ((pUL[1] & 16131858542891098079uL) == 4995689643909598789uL))) 
                     {
                         if (((_bits & 536870912L) != 0))
                         {
                             _WWWAuthenticate = AppendValue(_WWWAuthenticate, value);
                         }
                         else
                         {
                             _bits |= 536870912L;
                             _WWWAuthenticate = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 11:
                 {
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUS[4] & 57311u) == 17485u) && ((pUB[10] & 255u) == 53u))) 
                     {
                         if (((_bits & 65536L) != 0))
                         {
                             _ContentMD5 = AppendValue(_ContentMD5, value);
                         }
                         else
                         {
                             _bits |= 65536L;
                             _ContentMD5 = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131893727263186911uL) == 5062377317797741906uL) && ((pUS[4] & 57311u) == 17748u) && ((pUB[10] & 223u) == 82u))) 
                     {
                         if (((_bits & 33554432L) != 0))
                         {
                             _RetryAfter = AppendValue(_RetryAfter, value);
                         }
                         else
                         {
                             _bits |= 33554432L;
                             _RetryAfter = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 8:
                 {
                     if ((((pUL[0] & 16131858542891098079uL) == 5642809484339531596uL))) 
                     {
                         if (((_bits & 8388608L) != 0))
                         {
                             _Location = AppendValue(_Location, value);
                         }
                         else
                         {
                             _bits |= 8388608L;
                             _Location = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 32:
                 {
                     if ((((pUL[0] & 16140865742145839071uL) == 4840616791602578241uL) && ((pUL[1] & 16140865742145839071uL) == 4696493889984679503uL) && ((pUL[2] & 16131858680330051551uL) == 4995128798724705356uL) && ((pUL[3] & 16131858542891098079uL) == 6002244186580862276uL))) 
                     {
                         if (((_bits & 1073741824L) != 0))
                         {
                             _AccessControlAllowCredentials = AppendValue(_AccessControlAllowCredentials, value);
                         }
                         else
                         {
                             _bits |= 1073741824L;
                             _AccessControlAllowCredentials = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 28:
                 {
                     if ((((pUL[0] & 16140865742145839071uL) == 4840616791602578241uL) && ((pUL[1] & 16140865742145839071uL) == 4696493889984679503uL) && ((pUL[2] & 16131858680330051551uL) == 4703244745433893964uL) && ((pUI[6] & 3755991007u) == 1397900612u))) 
                     {
                         if (((_bits & 2147483648L) != 0))
                         {
                             _AccessControlAllowHeaders = AppendValue(_AccessControlAllowHeaders, value);
                         }
                         else
                         {
                             _bits |= 2147483648L;
                             _AccessControlAllowHeaders = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16140865742145839071uL) == 4840616791602578241uL) && ((pUL[1] & 16140865742145839071uL) == 4696493889984679503uL) && ((pUL[2] & 16131858680330051551uL) == 6072344529712663628uL) && ((pUI[6] & 3755991007u) == 1396985672u))) 
                     {
                         if (((_bits & 4294967296L) != 0))
                         {
                             _AccessControlAllowMethods = AppendValue(_AccessControlAllowMethods, value);
                         }
                         else
                         {
                             _bits |= 4294967296L;
                             _AccessControlAllowMethods = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 27:
                 {
                     if ((((pUL[0] & 16140865742145839071uL) == 4840616791602578241uL) && ((pUL[1] & 16140865742145839071uL) == 4696493889984679503uL) && ((pUL[2] & 16131858680330051551uL) == 5283372369015950412uL) && ((pUS[12] & 57311u) == 18759u) && ((pUB[26] & 223u) == 78u))) 
                     {
                         if (((_bits & 8589934592L) != 0))
                         {
                             _AccessControlAllowOrigin = AppendValue(_AccessControlAllowOrigin, value);
                         }
                         else
                         {
                             _bits |= 8589934592L;
                             _AccessControlAllowOrigin = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 29:
                 {
                     if ((((pUL[0] & 16140865742145839071uL) == 4840616791602578241uL) && ((pUL[1] & 16140865742145839071uL) == 4984724266136391247uL) && ((pUL[2] & 16131893727263186911uL) == 4992289962713895000uL) && ((pUI[6] & 3755991007u) == 1380271169u) && ((pUB[28] & 223u) == 83u))) 
                     {
                         if (((_bits & 17179869184L) != 0))
                         {
                             _AccessControlExposeHeaders = AppendValue(_AccessControlExposeHeaders, value);
                         }
                         else
                         {
                             _bits |= 17179869184L;
                             _AccessControlExposeHeaders = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 22:
                 {
                     if ((((pUL[0] & 16140865742145839071uL) == 4840616791602578241uL) && ((pUL[1] & 16140865742145839071uL) == 5561185018439814735uL) && ((pUI[4] & 3758088159u) == 1093490753u) && ((pUS[10] & 57311u) == 17735u))) 
                     {
                         if (((_bits & 34359738368L) != 0))
                         {
                             _AccessControlMaxAge = AppendValue(_AccessControlMaxAge, value);
                         }
                         else
                         {
                             _bits |= 34359738368L;
                             _AccessControlMaxAge = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         }
     }
     var key = System.Text.Encoding.ASCII.GetString(keyBytes, keyOffset, keyLength);
     StringValues existing;
     Unknown.TryGetValue(key, out existing);
     Unknown[key] = AppendValue(existing, value);
 }
Ejemplo n.º 45
0
 protected virtual void SetValueFast(string key, StringValues value)
 {
     throw new NotImplementedException();
 }
 protected override void AddValueFast(string key, StringValues value)
 {
     switch (key.Length)
     {
         case 13:
             {
                 if ("Cache-Control".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1L;
                     _CacheControl = value;
                     return;
                 }
             
                 if ("Content-Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 131072L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 131072L;
                     _ContentRange = value;
                     return;
                 }
             
                 if ("Last-Modified".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 524288L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 524288L;
                     _LastModified = value;
                     return;
                 }
             
                 if ("Accept-Ranges".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1048576L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1048576L;
                     _AcceptRanges = value;
                     return;
                 }
             }
             break;
     
         case 10:
             {
                 if ("Connection".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2L;
                     _Connection = value;
                     _rawConnection = null;
                     return;
                 }
             
                 if ("Keep-Alive".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8L;
                     _KeepAlive = value;
                     return;
                 }
             
                 if ("Set-Cookie".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 134217728L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 134217728L;
                     _SetCookie = value;
                     return;
                 }
             }
             break;
     
         case 4:
             {
                 if ("Date".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4L;
                     _Date = value;
                     _rawDate = null;
                     return;
                 }
             
                 if ("ETag".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4194304L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4194304L;
                     _ETag = value;
                     return;
                 }
             
                 if ("Vary".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 268435456L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 268435456L;
                     _Vary = value;
                     return;
                 }
             }
             break;
     
         case 6:
             {
                 if ("Pragma".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 16L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 16L;
                     _Pragma = value;
                     return;
                 }
             
                 if ("Server".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 67108864L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 67108864L;
                     _Server = value;
                     _rawServer = null;
                     return;
                 }
             }
             break;
     
         case 7:
             {
                 if ("Trailer".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 32L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 32L;
                     _Trailer = value;
                     return;
                 }
             
                 if ("Upgrade".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 128L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 128L;
                     _Upgrade = value;
                     return;
                 }
             
                 if ("Warning".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 512L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 512L;
                     _Warning = value;
                     return;
                 }
             
                 if ("Expires".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 262144L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 262144L;
                     _Expires = value;
                     return;
                 }
             }
             break;
     
         case 17:
             {
                 if ("Transfer-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 64L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 64L;
                     _TransferEncoding = value;
                     _rawTransferEncoding = null;
                     return;
                 }
             
                 if ("Proxy-Autheticate".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 16777216L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 16777216L;
                     _ProxyAutheticate = value;
                     return;
                 }
             }
             break;
     
         case 3:
             {
                 if ("Via".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 256L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 256L;
                     _Via = value;
                     return;
                 }
             
                 if ("Age".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2097152L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2097152L;
                     _Age = value;
                     return;
                 }
             }
             break;
     
         case 5:
             {
                 if ("Allow".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1024L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1024L;
                     _Allow = value;
                     return;
                 }
             }
             break;
     
         case 14:
             {
                 if ("Content-Length".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2048L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2048L;
                     _ContentLength = value;
                     _rawContentLength = null;
                     return;
                 }
             }
             break;
     
         case 12:
             {
                 if ("Content-Type".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4096L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4096L;
                     _ContentType = value;
                     return;
                 }
             }
             break;
     
         case 16:
             {
                 if ("Content-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8192L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8192L;
                     _ContentEncoding = value;
                     return;
                 }
             
                 if ("Content-Language".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 16384L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 16384L;
                     _ContentLanguage = value;
                     return;
                 }
             
                 if ("Content-Location".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 32768L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 32768L;
                     _ContentLocation = value;
                     return;
                 }
             
                 if ("WWW-Authenticate".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 536870912L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 536870912L;
                     _WWWAuthenticate = value;
                     return;
                 }
             }
             break;
     
         case 11:
             {
                 if ("Content-MD5".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 65536L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 65536L;
                     _ContentMD5 = value;
                     return;
                 }
             
                 if ("Retry-After".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 33554432L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 33554432L;
                     _RetryAfter = value;
                     return;
                 }
             }
             break;
     
         case 8:
             {
                 if ("Location".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8388608L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8388608L;
                     _Location = value;
                     return;
                 }
             }
             break;
     
         case 32:
             {
                 if ("Access-Control-Allow-Credentials".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1073741824L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1073741824L;
                     _AccessControlAllowCredentials = value;
                     return;
                 }
             }
             break;
     
         case 28:
             {
                 if ("Access-Control-Allow-Headers".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2147483648L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2147483648L;
                     _AccessControlAllowHeaders = value;
                     return;
                 }
             
                 if ("Access-Control-Allow-Methods".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4294967296L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4294967296L;
                     _AccessControlAllowMethods = value;
                     return;
                 }
             }
             break;
     
         case 27:
             {
                 if ("Access-Control-Allow-Origin".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8589934592L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8589934592L;
                     _AccessControlAllowOrigin = value;
                     return;
                 }
             }
             break;
     
         case 29:
             {
                 if ("Access-Control-Expose-Headers".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 17179869184L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 17179869184L;
                     _AccessControlExposeHeaders = value;
                     return;
                 }
             }
             break;
     
         case 22:
             {
                 if ("Access-Control-Max-Age".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 34359738368L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 34359738368L;
                     _AccessControlMaxAge = value;
                     return;
                 }
             }
             break;
     }
     Unknown.Add(key, value);
 }
 protected override bool RemoveFast(string key)
 {
     switch (key.Length)
     {
         case 13:
             {
                 if ("Cache-Control".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1L) != 0))
                     {
                         _bits &= ~1L;
                         _CacheControl = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Content-Range".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 131072L) != 0))
                     {
                         _bits &= ~131072L;
                         _ContentRange = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Last-Modified".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 524288L) != 0))
                     {
                         _bits &= ~524288L;
                         _LastModified = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Accept-Ranges".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1048576L) != 0))
                     {
                         _bits &= ~1048576L;
                         _AcceptRanges = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 10:
             {
                 if ("Connection".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2L) != 0))
                     {
                         _bits &= ~2L;
                         _Connection = StringValues.Empty;
                         _rawConnection = null;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Keep-Alive".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8L) != 0))
                     {
                         _bits &= ~8L;
                         _KeepAlive = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Set-Cookie".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 134217728L) != 0))
                     {
                         _bits &= ~134217728L;
                         _SetCookie = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 4:
             {
                 if ("Date".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4L) != 0))
                     {
                         _bits &= ~4L;
                         _Date = StringValues.Empty;
                         _rawDate = null;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("ETag".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4194304L) != 0))
                     {
                         _bits &= ~4194304L;
                         _ETag = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Vary".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 268435456L) != 0))
                     {
                         _bits &= ~268435456L;
                         _Vary = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 6:
             {
                 if ("Pragma".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 16L) != 0))
                     {
                         _bits &= ~16L;
                         _Pragma = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Server".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 67108864L) != 0))
                     {
                         _bits &= ~67108864L;
                         _Server = StringValues.Empty;
                         _rawServer = null;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 7:
             {
                 if ("Trailer".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 32L) != 0))
                     {
                         _bits &= ~32L;
                         _Trailer = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Upgrade".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 128L) != 0))
                     {
                         _bits &= ~128L;
                         _Upgrade = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Warning".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 512L) != 0))
                     {
                         _bits &= ~512L;
                         _Warning = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Expires".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 262144L) != 0))
                     {
                         _bits &= ~262144L;
                         _Expires = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 17:
             {
                 if ("Transfer-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 64L) != 0))
                     {
                         _bits &= ~64L;
                         _TransferEncoding = StringValues.Empty;
                         _rawTransferEncoding = null;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Proxy-Autheticate".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 16777216L) != 0))
                     {
                         _bits &= ~16777216L;
                         _ProxyAutheticate = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 3:
             {
                 if ("Via".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 256L) != 0))
                     {
                         _bits &= ~256L;
                         _Via = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Age".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2097152L) != 0))
                     {
                         _bits &= ~2097152L;
                         _Age = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 5:
             {
                 if ("Allow".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1024L) != 0))
                     {
                         _bits &= ~1024L;
                         _Allow = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 14:
             {
                 if ("Content-Length".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2048L) != 0))
                     {
                         _bits &= ~2048L;
                         _ContentLength = StringValues.Empty;
                         _rawContentLength = null;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 12:
             {
                 if ("Content-Type".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4096L) != 0))
                     {
                         _bits &= ~4096L;
                         _ContentType = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 16:
             {
                 if ("Content-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8192L) != 0))
                     {
                         _bits &= ~8192L;
                         _ContentEncoding = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Content-Language".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 16384L) != 0))
                     {
                         _bits &= ~16384L;
                         _ContentLanguage = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Content-Location".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 32768L) != 0))
                     {
                         _bits &= ~32768L;
                         _ContentLocation = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("WWW-Authenticate".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 536870912L) != 0))
                     {
                         _bits &= ~536870912L;
                         _WWWAuthenticate = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 11:
             {
                 if ("Content-MD5".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 65536L) != 0))
                     {
                         _bits &= ~65536L;
                         _ContentMD5 = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Retry-After".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 33554432L) != 0))
                     {
                         _bits &= ~33554432L;
                         _RetryAfter = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 8:
             {
                 if ("Location".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8388608L) != 0))
                     {
                         _bits &= ~8388608L;
                         _Location = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 32:
             {
                 if ("Access-Control-Allow-Credentials".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1073741824L) != 0))
                     {
                         _bits &= ~1073741824L;
                         _AccessControlAllowCredentials = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 28:
             {
                 if ("Access-Control-Allow-Headers".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2147483648L) != 0))
                     {
                         _bits &= ~2147483648L;
                         _AccessControlAllowHeaders = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Access-Control-Allow-Methods".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4294967296L) != 0))
                     {
                         _bits &= ~4294967296L;
                         _AccessControlAllowMethods = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 27:
             {
                 if ("Access-Control-Allow-Origin".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8589934592L) != 0))
                     {
                         _bits &= ~8589934592L;
                         _AccessControlAllowOrigin = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 29:
             {
                 if ("Access-Control-Expose-Headers".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 17179869184L) != 0))
                     {
                         _bits &= ~17179869184L;
                         _AccessControlExposeHeaders = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 22:
             {
                 if ("Access-Control-Max-Age".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 34359738368L) != 0))
                     {
                         _bits &= ~34359738368L;
                         _AccessControlMaxAge = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     }
     return MaybeUnknown?.Remove(key) ?? false;
 }
 public void SetRawServer(StringValues value, byte[] raw)
 {
     _bits |= 67108864L;
     _Server = value; 
     _rawServer = raw;
 }
        protected override bool TryGetValueFast(string key, out StringValues value)
        {
            switch (key.Length)
            {
                case 13:
                    {
                        if ("Cache-Control".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 1L) != 0))
                            {
                                value = _CacheControl;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Content-Range".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 131072L) != 0))
                            {
                                value = _ContentRange;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Last-Modified".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 524288L) != 0))
                            {
                                value = _LastModified;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Accept-Ranges".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 1048576L) != 0))
                            {
                                value = _AcceptRanges;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 10:
                    {
                        if ("Connection".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 2L) != 0))
                            {
                                value = _Connection;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Keep-Alive".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 8L) != 0))
                            {
                                value = _KeepAlive;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Set-Cookie".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 134217728L) != 0))
                            {
                                value = _SetCookie;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 4:
                    {
                        if ("Date".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 4L) != 0))
                            {
                                value = _Date;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("ETag".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 4194304L) != 0))
                            {
                                value = _ETag;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Vary".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 268435456L) != 0))
                            {
                                value = _Vary;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 6:
                    {
                        if ("Pragma".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 16L) != 0))
                            {
                                value = _Pragma;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Server".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 67108864L) != 0))
                            {
                                value = _Server;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 7:
                    {
                        if ("Trailer".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 32L) != 0))
                            {
                                value = _Trailer;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Upgrade".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 128L) != 0))
                            {
                                value = _Upgrade;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Warning".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 512L) != 0))
                            {
                                value = _Warning;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Expires".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 262144L) != 0))
                            {
                                value = _Expires;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 17:
                    {
                        if ("Transfer-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 64L) != 0))
                            {
                                value = _TransferEncoding;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Proxy-Autheticate".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 16777216L) != 0))
                            {
                                value = _ProxyAutheticate;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 3:
                    {
                        if ("Via".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 256L) != 0))
                            {
                                value = _Via;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Age".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 2097152L) != 0))
                            {
                                value = _Age;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 5:
                    {
                        if ("Allow".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 1024L) != 0))
                            {
                                value = _Allow;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 14:
                    {
                        if ("Content-Length".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 2048L) != 0))
                            {
                                value = _ContentLength;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 12:
                    {
                        if ("Content-Type".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 4096L) != 0))
                            {
                                value = _ContentType;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 16:
                    {
                        if ("Content-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 8192L) != 0))
                            {
                                value = _ContentEncoding;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Content-Language".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 16384L) != 0))
                            {
                                value = _ContentLanguage;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Content-Location".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 32768L) != 0))
                            {
                                value = _ContentLocation;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("WWW-Authenticate".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 536870912L) != 0))
                            {
                                value = _WWWAuthenticate;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 11:
                    {
                        if ("Content-MD5".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 65536L) != 0))
                            {
                                value = _ContentMD5;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Retry-After".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 33554432L) != 0))
                            {
                                value = _RetryAfter;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 8:
                    {
                        if ("Location".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 8388608L) != 0))
                            {
                                value = _Location;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 32:
                    {
                        if ("Access-Control-Allow-Credentials".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 1073741824L) != 0))
                            {
                                value = _AccessControlAllowCredentials;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 28:
                    {
                        if ("Access-Control-Allow-Headers".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 2147483648L) != 0))
                            {
                                value = _AccessControlAllowHeaders;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    
                        if ("Access-Control-Allow-Methods".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 4294967296L) != 0))
                            {
                                value = _AccessControlAllowMethods;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 27:
                    {
                        if ("Access-Control-Allow-Origin".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 8589934592L) != 0))
                            {
                                value = _AccessControlAllowOrigin;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 29:
                    {
                        if ("Access-Control-Expose-Headers".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 17179869184L) != 0))
                            {
                                value = _AccessControlExposeHeaders;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;

                case 22:
                    {
                        if ("Access-Control-Max-Age".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                        {
                            if (((_bits & 34359738368L) != 0))
                            {
                                value = _AccessControlMaxAge;
                                return true;
                            }
                            else
                            {
                                value = StringValues.Empty;
                                return false;
                            }
                        }
                    }
                    break;
}
            value = StringValues.Empty;
            return MaybeUnknown?.TryGetValue(key, out value) ?? false;
        }
 public void SetRawTransferEncoding(StringValues value, byte[] raw)
 {
     _bits |= 64L;
     _TransferEncoding = value; 
     _rawTransferEncoding = raw;
 }
 public void SetRawContentLength(StringValues value, byte[] raw)
 {
     _bits |= 2048L;
     _ContentLength = value; 
     _rawContentLength = raw;
 }
 public void SetRawConnection(StringValues value, byte[] raw)
 {
     _bits |= 2L;
     _Connection = value; 
     _rawConnection = raw;
 }
 public void SetRawDate(StringValues value, byte[] raw)
 {
     _bits |= 4L;
     _Date = value; 
     _rawDate = raw;
 }
 protected override bool RemoveFast(string key)
 {
     switch (key.Length)
     {
         case 13:
             {
                 if ("Cache-Control".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1L) != 0))
                     {
                         _bits &= ~1L;
                         _CacheControl = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Content-Range".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 131072L) != 0))
                     {
                         _bits &= ~131072L;
                         _ContentRange = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Last-Modified".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 524288L) != 0))
                     {
                         _bits &= ~524288L;
                         _LastModified = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Authorization".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 16777216L) != 0))
                     {
                         _bits &= ~16777216L;
                         _Authorization = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("If-None-Match".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2147483648L) != 0))
                     {
                         _bits &= ~2147483648L;
                         _IfNoneMatch = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 10:
             {
                 if ("Connection".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2L) != 0))
                     {
                         _bits &= ~2L;
                         _Connection = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Keep-Alive".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8L) != 0))
                     {
                         _bits &= ~8L;
                         _KeepAlive = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("User-Agent".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1099511627776L) != 0))
                     {
                         _bits &= ~1099511627776L;
                         _UserAgent = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 4:
             {
                 if ("Date".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4L) != 0))
                     {
                         _bits &= ~4L;
                         _Date = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("From".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 134217728L) != 0))
                     {
                         _bits &= ~134217728L;
                         _From = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Host".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 268435456L) != 0))
                     {
                         _bits &= ~268435456L;
                         _Host = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 6:
             {
                 if ("Pragma".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 16L) != 0))
                     {
                         _bits &= ~16L;
                         _Pragma = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Accept".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1048576L) != 0))
                     {
                         _bits &= ~1048576L;
                         _Accept = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Cookie".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 33554432L) != 0))
                     {
                         _bits &= ~33554432L;
                         _Cookie = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Expect".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 67108864L) != 0))
                     {
                         _bits &= ~67108864L;
                         _Expect = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Origin".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2199023255552L) != 0))
                     {
                         _bits &= ~2199023255552L;
                         _Origin = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 7:
             {
                 if ("Trailer".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 32L) != 0))
                     {
                         _bits &= ~32L;
                         _Trailer = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Upgrade".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 128L) != 0))
                     {
                         _bits &= ~128L;
                         _Upgrade = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Warning".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 512L) != 0))
                     {
                         _bits &= ~512L;
                         _Warning = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Expires".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 262144L) != 0))
                     {
                         _bits &= ~262144L;
                         _Expires = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Referer".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 68719476736L) != 0))
                     {
                         _bits &= ~68719476736L;
                         _Referer = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 17:
             {
                 if ("Transfer-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 64L) != 0))
                     {
                         _bits &= ~64L;
                         _TransferEncoding = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("If-Modified-Since".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1073741824L) != 0))
                     {
                         _bits &= ~1073741824L;
                         _IfModifiedSince = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 3:
             {
                 if ("Via".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 256L) != 0))
                     {
                         _bits &= ~256L;
                         _Via = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 5:
             {
                 if ("Allow".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 1024L) != 0))
                     {
                         _bits &= ~1024L;
                         _Allow = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Range".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 137438953472L) != 0))
                     {
                         _bits &= ~137438953472L;
                         _Range = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 14:
             {
                 if ("Content-Length".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2048L) != 0))
                     {
                         _bits &= ~2048L;
                         _ContentLength = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Accept-Charset".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 2097152L) != 0))
                     {
                         _bits &= ~2097152L;
                         _AcceptCharset = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 12:
             {
                 if ("Content-Type".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4096L) != 0))
                     {
                         _bits &= ~4096L;
                         _ContentType = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Max-Forwards".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 17179869184L) != 0))
                     {
                         _bits &= ~17179869184L;
                         _MaxForwards = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 16:
             {
                 if ("Content-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8192L) != 0))
                     {
                         _bits &= ~8192L;
                         _ContentEncoding = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Content-Language".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 16384L) != 0))
                     {
                         _bits &= ~16384L;
                         _ContentLanguage = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Content-Location".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 32768L) != 0))
                     {
                         _bits &= ~32768L;
                         _ContentLocation = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 11:
             {
                 if ("Content-MD5".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 65536L) != 0))
                     {
                         _bits &= ~65536L;
                         _ContentMD5 = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 15:
             {
                 if ("Accept-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4194304L) != 0))
                     {
                         _bits &= ~4194304L;
                         _AcceptEncoding = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Accept-Language".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8388608L) != 0))
                     {
                         _bits &= ~8388608L;
                         _AcceptLanguage = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 8:
             {
                 if ("If-Match".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 536870912L) != 0))
                     {
                         _bits &= ~536870912L;
                         _IfMatch = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("If-Range".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4294967296L) != 0))
                     {
                         _bits &= ~4294967296L;
                         _IfRange = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 19:
             {
                 if ("If-Unmodified-Since".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8589934592L) != 0))
                     {
                         _bits &= ~8589934592L;
                         _IfUnmodifiedSince = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             
                 if ("Proxy-Authorization".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 34359738368L) != 0))
                     {
                         _bits &= ~34359738368L;
                         _ProxyAuthorization = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 2:
             {
                 if ("TE".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 274877906944L) != 0))
                     {
                         _bits &= ~274877906944L;
                         _TE = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 9:
             {
                 if ("Translate".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 549755813888L) != 0))
                     {
                         _bits &= ~549755813888L;
                         _Translate = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 29:
             {
                 if ("Access-Control-Request-Method".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 4398046511104L) != 0))
                     {
                         _bits &= ~4398046511104L;
                         _AccessControlRequestMethod = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     
         case 30:
             {
                 if ("Access-Control-Request-Headers".Equals(key, StringComparison.OrdinalIgnoreCase)) 
                 {
                     if (((_bits & 8796093022208L) != 0))
                     {
                         _bits &= ~8796093022208L;
                         _AccessControlRequestHeaders = StringValues.Empty;
                         return true;
                     }
                     else
                     {
                         return false;
                     }
                 }
             }
             break;
     }
     return MaybeUnknown?.Remove(key) ?? false;
 }
 public unsafe void Append(byte[] keyBytes, int keyOffset, int keyLength, string value)
 {
     fixed (byte* ptr = &keyBytes[keyOffset]) 
     { 
         var pUB = ptr; 
         var pUL = (ulong*)pUB; 
         var pUI = (uint*)pUB; 
         var pUS = (ushort*)pUB;
         switch (keyLength)
         {
             case 13:
                 {
                     if ((((pUL[0] & 16131893727263186911uL) == 5711458528024281411uL) && ((pUI[2] & 3755991007u) == 1330795598u) && ((pUB[12] & 223u) == 76u))) 
                     {
                         if (((_bits & 1L) != 0))
                         {
                             _CacheControl = AppendValue(_CacheControl, value);
                         }
                         else
                         {
                             _bits |= 1L;
                             _CacheControl = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUI[2] & 3755991007u) == 1196310866u) && ((pUB[12] & 223u) == 69u))) 
                     {
                         if (((_bits & 131072L) != 0))
                         {
                             _ContentRange = AppendValue(_ContentRange, value);
                         }
                         else
                         {
                             _bits |= 131072L;
                             _ContentRange = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858680330051551uL) == 4922237774822850892uL) && ((pUI[2] & 3755991007u) == 1162430025u) && ((pUB[12] & 223u) == 68u))) 
                     {
                         if (((_bits & 524288L) != 0))
                         {
                             _LastModified = AppendValue(_LastModified, value);
                         }
                         else
                         {
                             _bits |= 524288L;
                             _LastModified = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858542891098079uL) == 6505821637182772545uL) && ((pUI[2] & 3755991007u) == 1330205761u) && ((pUB[12] & 223u) == 78u))) 
                     {
                         if (((_bits & 16777216L) != 0))
                         {
                             _Authorization = AppendValue(_Authorization, value);
                         }
                         else
                         {
                             _bits |= 16777216L;
                             _Authorization = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 18437701552106889183uL) == 3262099607620765257uL) && ((pUI[2] & 3755991007u) == 1129595213u) && ((pUB[12] & 223u) == 72u))) 
                     {
                         if (((_bits & 2147483648L) != 0))
                         {
                             _IfNoneMatch = AppendValue(_IfNoneMatch, value);
                         }
                         else
                         {
                             _bits |= 2147483648L;
                             _IfNoneMatch = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 10:
                 {
                     if ((((pUL[0] & 16131858542891098079uL) == 5283922227757993795uL) && ((pUS[4] & 57311u) == 20047u))) 
                     {
                         if (((_bits & 2L) != 0))
                         {
                             _Connection = AppendValue(_Connection, value);
                         }
                         else
                         {
                             _bits |= 2L;
                             _Connection = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858680330051551uL) == 5281668125874799947uL) && ((pUS[4] & 57311u) == 17750u))) 
                     {
                         if (((_bits & 8L) != 0))
                         {
                             _KeepAlive = AppendValue(_KeepAlive, value);
                         }
                         else
                         {
                             _bits |= 8L;
                             _KeepAlive = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858680330051551uL) == 4992030374873092949uL) && ((pUS[4] & 57311u) == 21582u))) 
                     {
                         if (((_bits & 1099511627776L) != 0))
                         {
                             _UserAgent = AppendValue(_UserAgent, value);
                         }
                         else
                         {
                             _bits |= 1099511627776L;
                             _UserAgent = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 4:
                 {
                     if ((((pUI[0] & 3755991007u) == 1163149636u))) 
                     {
                         if (((_bits & 4L) != 0))
                         {
                             _Date = AppendValue(_Date, value);
                         }
                         else
                         {
                             _bits |= 4L;
                             _Date = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1297044038u))) 
                     {
                         if (((_bits & 134217728L) != 0))
                         {
                             _From = AppendValue(_From, value);
                         }
                         else
                         {
                             _bits |= 134217728L;
                             _From = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1414745928u))) 
                     {
                         if (((_bits & 268435456L) != 0))
                         {
                             _Host = AppendValue(_Host, value);
                         }
                         else
                         {
                             _bits |= 268435456L;
                             _Host = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 6:
                 {
                     if ((((pUI[0] & 3755991007u) == 1195463248u) && ((pUS[2] & 57311u) == 16717u))) 
                     {
                         if (((_bits & 16L) != 0))
                         {
                             _Pragma = AppendValue(_Pragma, value);
                         }
                         else
                         {
                             _bits |= 16L;
                             _Pragma = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1162036033u) && ((pUS[2] & 57311u) == 21584u))) 
                     {
                         if (((_bits & 1048576L) != 0))
                         {
                             _Accept = AppendValue(_Accept, value);
                         }
                         else
                         {
                             _bits |= 1048576L;
                             _Accept = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1263488835u) && ((pUS[2] & 57311u) == 17737u))) 
                     {
                         if (((_bits & 33554432L) != 0))
                         {
                             _Cookie = AppendValue(_Cookie, value);
                         }
                         else
                         {
                             _bits |= 33554432L;
                             _Cookie = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1162893381u) && ((pUS[2] & 57311u) == 21571u))) 
                     {
                         if (((_bits & 67108864L) != 0))
                         {
                             _Expect = AppendValue(_Expect, value);
                         }
                         else
                         {
                             _bits |= 67108864L;
                             _Expect = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1195987535u) && ((pUS[2] & 57311u) == 20041u))) 
                     {
                         if (((_bits & 2199023255552L) != 0))
                         {
                             _Origin = AppendValue(_Origin, value);
                         }
                         else
                         {
                             _bits |= 2199023255552L;
                             _Origin = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 7:
                 {
                     if ((((pUI[0] & 3755991007u) == 1229017684u) && ((pUS[2] & 57311u) == 17740u) && ((pUB[6] & 223u) == 82u))) 
                     {
                         if (((_bits & 32L) != 0))
                         {
                             _Trailer = AppendValue(_Trailer, value);
                         }
                         else
                         {
                             _bits |= 32L;
                             _Trailer = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1380405333u) && ((pUS[2] & 57311u) == 17473u) && ((pUB[6] & 223u) == 69u))) 
                     {
                         if (((_bits & 128L) != 0))
                         {
                             _Upgrade = AppendValue(_Upgrade, value);
                         }
                         else
                         {
                             _bits |= 128L;
                             _Upgrade = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1314013527u) && ((pUS[2] & 57311u) == 20041u) && ((pUB[6] & 223u) == 71u))) 
                     {
                         if (((_bits & 512L) != 0))
                         {
                             _Warning = AppendValue(_Warning, value);
                         }
                         else
                         {
                             _bits |= 512L;
                             _Warning = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1230002245u) && ((pUS[2] & 57311u) == 17746u) && ((pUB[6] & 223u) == 83u))) 
                     {
                         if (((_bits & 262144L) != 0))
                         {
                             _Expires = AppendValue(_Expires, value);
                         }
                         else
                         {
                             _bits |= 262144L;
                             _Expires = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1162233170u) && ((pUS[2] & 57311u) == 17746u) && ((pUB[6] & 223u) == 82u))) 
                     {
                         if (((_bits & 68719476736L) != 0))
                         {
                             _Referer = AppendValue(_Referer, value);
                         }
                         else
                         {
                             _bits |= 68719476736L;
                             _Referer = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 17:
                 {
                     if ((((pUL[0] & 16131858542891098079uL) == 5928221808112259668uL) && ((pUL[1] & 16131858542891098111uL) == 5641115115480565037uL) && ((pUB[16] & 223u) == 71u))) 
                     {
                         if (((_bits & 64L) != 0))
                         {
                             _TransferEncoding = AppendValue(_TransferEncoding, value);
                         }
                         else
                         {
                             _bits |= 64L;
                             _TransferEncoding = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858542893195231uL) == 5064654363342751305uL) && ((pUL[1] & 16131858543427968991uL) == 4849894470315165001uL) && ((pUB[16] & 223u) == 69u))) 
                     {
                         if (((_bits & 1073741824L) != 0))
                         {
                             _IfModifiedSince = AppendValue(_IfModifiedSince, value);
                         }
                         else
                         {
                             _bits |= 1073741824L;
                             _IfModifiedSince = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 3:
                 {
                     if ((((pUS[0] & 57311u) == 18774u) && ((pUB[2] & 223u) == 65u))) 
                     {
                         if (((_bits & 256L) != 0))
                         {
                             _Via = AppendValue(_Via, value);
                         }
                         else
                         {
                             _bits |= 256L;
                             _Via = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 5:
                 {
                     if ((((pUI[0] & 3755991007u) == 1330400321u) && ((pUB[4] & 223u) == 87u))) 
                     {
                         if (((_bits & 1024L) != 0))
                         {
                             _Allow = AppendValue(_Allow, value);
                         }
                         else
                         {
                             _bits |= 1024L;
                             _Allow = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUI[0] & 3755991007u) == 1196310866u) && ((pUB[4] & 223u) == 69u))) 
                     {
                         if (((_bits & 137438953472L) != 0))
                         {
                             _Range = AppendValue(_Range, value);
                         }
                         else
                         {
                             _bits |= 137438953472L;
                             _Range = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 14:
                 {
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUI[2] & 3755991007u) == 1196311884u) && ((pUS[6] & 57311u) == 18516u))) 
                     {
                         if (((_bits & 2048L) != 0))
                         {
                             _ContentLength = AppendValue(_ContentLength, value);
                         }
                         else
                         {
                             _bits |= 2048L;
                             _ContentLength = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16140865742145839071uL) == 4840617878229304129uL) && ((pUI[2] & 3755991007u) == 1397899592u) && ((pUS[6] & 57311u) == 21573u))) 
                     {
                         if (((_bits & 2097152L) != 0))
                         {
                             _AcceptCharset = AppendValue(_AcceptCharset, value);
                         }
                         else
                         {
                             _bits |= 2097152L;
                             _AcceptCharset = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 12:
                 {
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUI[2] & 3755991007u) == 1162893652u))) 
                     {
                         if (((_bits & 4096L) != 0))
                         {
                             _ContentType = AppendValue(_ContentType, value);
                         }
                         else
                         {
                             _bits |= 4096L;
                             _ContentType = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858543427968991uL) == 6292178792217067853uL) && ((pUI[2] & 3755991007u) == 1396986433u))) 
                     {
                         if (((_bits & 17179869184L) != 0))
                         {
                             _MaxForwards = AppendValue(_MaxForwards, value);
                         }
                         else
                         {
                             _bits |= 17179869184L;
                             _MaxForwards = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 16:
                 {
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUL[1] & 16131858542891098079uL) == 5138124782612729413uL))) 
                     {
                         if (((_bits & 8192L) != 0))
                         {
                             _ContentEncoding = AppendValue(_ContentEncoding, value);
                         }
                         else
                         {
                             _bits |= 8192L;
                             _ContentEncoding = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUL[1] & 16131858542891098079uL) == 4992030546487820620uL))) 
                     {
                         if (((_bits & 16384L) != 0))
                         {
                             _ContentLanguage = AppendValue(_ContentLanguage, value);
                         }
                         else
                         {
                             _bits |= 16384L;
                             _ContentLanguage = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUL[1] & 16131858542891098079uL) == 5642809484339531596uL))) 
                     {
                         if (((_bits & 32768L) != 0))
                         {
                             _ContentLocation = AppendValue(_ContentLocation, value);
                         }
                         else
                         {
                             _bits |= 32768L;
                             _ContentLocation = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 11:
                 {
                     if ((((pUL[0] & 18437701552104792031uL) == 3266321689424580419uL) && ((pUS[4] & 57311u) == 17485u) && ((pUB[10] & 255u) == 53u))) 
                     {
                         if (((_bits & 65536L) != 0))
                         {
                             _ContentMD5 = AppendValue(_ContentMD5, value);
                         }
                         else
                         {
                             _bits |= 65536L;
                             _ContentMD5 = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 15:
                 {
                     if ((((pUL[0] & 16140865742145839071uL) == 4984733066305160001uL) && ((pUI[2] & 3755991007u) == 1146045262u) && ((pUS[6] & 57311u) == 20041u) && ((pUB[14] & 223u) == 71u))) 
                     {
                         if (((_bits & 4194304L) != 0))
                         {
                             _AcceptEncoding = AppendValue(_AcceptEncoding, value);
                         }
                         else
                         {
                             _bits |= 4194304L;
                             _AcceptEncoding = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16140865742145839071uL) == 5489136224570655553uL) && ((pUI[2] & 3755991007u) == 1430736449u) && ((pUS[6] & 57311u) == 18241u) && ((pUB[14] & 223u) == 69u))) 
                     {
                         if (((_bits & 8388608L) != 0))
                         {
                             _AcceptLanguage = AppendValue(_AcceptLanguage, value);
                         }
                         else
                         {
                             _bits |= 8388608L;
                             _AcceptLanguage = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 8:
                 {
                     if ((((pUL[0] & 16131858542893195231uL) == 5207098233614845513uL))) 
                     {
                         if (((_bits & 536870912L) != 0))
                         {
                             _IfMatch = AppendValue(_IfMatch, value);
                         }
                         else
                         {
                             _bits |= 536870912L;
                             _IfMatch = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131858542893195231uL) == 4992044754422023753uL))) 
                     {
                         if (((_bits & 4294967296L) != 0))
                         {
                             _IfRange = AppendValue(_IfRange, value);
                         }
                         else
                         {
                             _bits |= 4294967296L;
                             _IfRange = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 19:
                 {
                     if ((((pUL[0] & 16131858542893195231uL) == 4922237916571059785uL) && ((pUL[1] & 16131893727263186911uL) == 5283616559079179849uL) && ((pUS[8] & 57311u) == 17230u) && ((pUB[18] & 223u) == 69u))) 
                     {
                         if (((_bits & 8589934592L) != 0))
                         {
                             _IfUnmodifiedSince = AppendValue(_IfUnmodifiedSince, value);
                         }
                         else
                         {
                             _bits |= 8589934592L;
                             _IfUnmodifiedSince = new StringValues(value);
                         }
                         return;
                     }
                 
                     if ((((pUL[0] & 16131893727263186911uL) == 6143241228466999888uL) && ((pUL[1] & 16131858542891098079uL) == 6071233043632179284uL) && ((pUS[8] & 57311u) == 20297u) && ((pUB[18] & 223u) == 78u))) 
                     {
                         if (((_bits & 34359738368L) != 0))
                         {
                             _ProxyAuthorization = AppendValue(_ProxyAuthorization, value);
                         }
                         else
                         {
                             _bits |= 34359738368L;
                             _ProxyAuthorization = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 2:
                 {
                     if ((((pUS[0] & 57311u) == 17748u))) 
                     {
                         if (((_bits & 274877906944L) != 0))
                         {
                             _TE = AppendValue(_TE, value);
                         }
                         else
                         {
                             _bits |= 274877906944L;
                             _TE = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 9:
                 {
                     if ((((pUL[0] & 16131858542891098079uL) == 6071217693351039572uL) && ((pUB[8] & 223u) == 69u))) 
                     {
                         if (((_bits & 549755813888L) != 0))
                         {
                             _Translate = AppendValue(_Translate, value);
                         }
                         else
                         {
                             _bits |= 549755813888L;
                             _Translate = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 29:
                 {
                     if ((((pUL[0] & 16140865742145839071uL) == 4840616791602578241uL) && ((pUL[1] & 16140865742145839071uL) == 5921472988629454415uL) && ((pUL[2] & 16140865742145839071uL) == 5561193831494668613uL) && ((pUI[6] & 3755991007u) == 1330140229u) && ((pUB[28] & 223u) == 68u))) 
                     {
                         if (((_bits & 4398046511104L) != 0))
                         {
                             _AccessControlRequestMethod = AppendValue(_AccessControlRequestMethod, value);
                         }
                         else
                         {
                             _bits |= 4398046511104L;
                             _AccessControlRequestMethod = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         
             case 30:
                 {
                     if ((((pUL[0] & 16140865742145839071uL) == 4840616791602578241uL) && ((pUL[1] & 16140865742145839071uL) == 5921472988629454415uL) && ((pUL[2] & 16140865742145839071uL) == 5200905861305028933uL) && ((pUI[6] & 3755991007u) == 1162101061u) && ((pUS[14] & 57311u) == 21330u))) 
                     {
                         if (((_bits & 8796093022208L) != 0))
                         {
                             _AccessControlRequestHeaders = AppendValue(_AccessControlRequestHeaders, value);
                         }
                         else
                         {
                             _bits |= 8796093022208L;
                             _AccessControlRequestHeaders = new StringValues(value);
                         }
                         return;
                     }
                 }
                 break;
         }
     }
     var key = System.Text.Encoding.ASCII.GetString(keyBytes, keyOffset, keyLength);
     StringValues existing;
     Unknown.TryGetValue(key, out existing);
     Unknown[key] = AppendValue(existing, value);
 }
 protected override void AddValueFast(string key, StringValues value)
 {
     switch (key.Length)
     {
         case 13:
             {
                 if ("Cache-Control".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1L;
                     _CacheControl = value;
                     return;
                 }
             
                 if ("Content-Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 131072L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 131072L;
                     _ContentRange = value;
                     return;
                 }
             
                 if ("Last-Modified".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 524288L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 524288L;
                     _LastModified = value;
                     return;
                 }
             
                 if ("Authorization".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 16777216L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 16777216L;
                     _Authorization = value;
                     return;
                 }
             
                 if ("If-None-Match".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2147483648L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2147483648L;
                     _IfNoneMatch = value;
                     return;
                 }
             }
             break;
     
         case 10:
             {
                 if ("Connection".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2L;
                     _Connection = value;
                     return;
                 }
             
                 if ("Keep-Alive".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8L;
                     _KeepAlive = value;
                     return;
                 }
             
                 if ("User-Agent".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1099511627776L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1099511627776L;
                     _UserAgent = value;
                     return;
                 }
             }
             break;
     
         case 4:
             {
                 if ("Date".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4L;
                     _Date = value;
                     return;
                 }
             
                 if ("From".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 134217728L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 134217728L;
                     _From = value;
                     return;
                 }
             
                 if ("Host".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 268435456L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 268435456L;
                     _Host = value;
                     return;
                 }
             }
             break;
     
         case 6:
             {
                 if ("Pragma".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 16L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 16L;
                     _Pragma = value;
                     return;
                 }
             
                 if ("Accept".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1048576L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1048576L;
                     _Accept = value;
                     return;
                 }
             
                 if ("Cookie".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 33554432L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 33554432L;
                     _Cookie = value;
                     return;
                 }
             
                 if ("Expect".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 67108864L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 67108864L;
                     _Expect = value;
                     return;
                 }
             
                 if ("Origin".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2199023255552L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2199023255552L;
                     _Origin = value;
                     return;
                 }
             }
             break;
     
         case 7:
             {
                 if ("Trailer".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 32L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 32L;
                     _Trailer = value;
                     return;
                 }
             
                 if ("Upgrade".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 128L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 128L;
                     _Upgrade = value;
                     return;
                 }
             
                 if ("Warning".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 512L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 512L;
                     _Warning = value;
                     return;
                 }
             
                 if ("Expires".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 262144L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 262144L;
                     _Expires = value;
                     return;
                 }
             
                 if ("Referer".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 68719476736L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 68719476736L;
                     _Referer = value;
                     return;
                 }
             }
             break;
     
         case 17:
             {
                 if ("Transfer-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 64L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 64L;
                     _TransferEncoding = value;
                     return;
                 }
             
                 if ("If-Modified-Since".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1073741824L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1073741824L;
                     _IfModifiedSince = value;
                     return;
                 }
             }
             break;
     
         case 3:
             {
                 if ("Via".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 256L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 256L;
                     _Via = value;
                     return;
                 }
             }
             break;
     
         case 5:
             {
                 if ("Allow".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 1024L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 1024L;
                     _Allow = value;
                     return;
                 }
             
                 if ("Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 137438953472L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 137438953472L;
                     _Range = value;
                     return;
                 }
             }
             break;
     
         case 14:
             {
                 if ("Content-Length".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2048L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2048L;
                     _ContentLength = value;
                     return;
                 }
             
                 if ("Accept-Charset".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 2097152L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 2097152L;
                     _AcceptCharset = value;
                     return;
                 }
             }
             break;
     
         case 12:
             {
                 if ("Content-Type".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4096L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4096L;
                     _ContentType = value;
                     return;
                 }
             
                 if ("Max-Forwards".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 17179869184L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 17179869184L;
                     _MaxForwards = value;
                     return;
                 }
             }
             break;
     
         case 16:
             {
                 if ("Content-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8192L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8192L;
                     _ContentEncoding = value;
                     return;
                 }
             
                 if ("Content-Language".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 16384L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 16384L;
                     _ContentLanguage = value;
                     return;
                 }
             
                 if ("Content-Location".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 32768L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 32768L;
                     _ContentLocation = value;
                     return;
                 }
             }
             break;
     
         case 11:
             {
                 if ("Content-MD5".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 65536L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 65536L;
                     _ContentMD5 = value;
                     return;
                 }
             }
             break;
     
         case 15:
             {
                 if ("Accept-Encoding".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4194304L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4194304L;
                     _AcceptEncoding = value;
                     return;
                 }
             
                 if ("Accept-Language".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8388608L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8388608L;
                     _AcceptLanguage = value;
                     return;
                 }
             }
             break;
     
         case 8:
             {
                 if ("If-Match".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 536870912L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 536870912L;
                     _IfMatch = value;
                     return;
                 }
             
                 if ("If-Range".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4294967296L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4294967296L;
                     _IfRange = value;
                     return;
                 }
             }
             break;
     
         case 19:
             {
                 if ("If-Unmodified-Since".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8589934592L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8589934592L;
                     _IfUnmodifiedSince = value;
                     return;
                 }
             
                 if ("Proxy-Authorization".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 34359738368L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 34359738368L;
                     _ProxyAuthorization = value;
                     return;
                 }
             }
             break;
     
         case 2:
             {
                 if ("TE".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 274877906944L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 274877906944L;
                     _TE = value;
                     return;
                 }
             }
             break;
     
         case 9:
             {
                 if ("Translate".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 549755813888L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 549755813888L;
                     _Translate = value;
                     return;
                 }
             }
             break;
     
         case 29:
             {
                 if ("Access-Control-Request-Method".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 4398046511104L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 4398046511104L;
                     _AccessControlRequestMethod = value;
                     return;
                 }
             }
             break;
     
         case 30:
             {
                 if ("Access-Control-Request-Headers".Equals(key, StringComparison.OrdinalIgnoreCase))
                 {
                     if (((_bits & 8796093022208L) != 0))
                     {
                         throw new ArgumentException("An item with the same key has already been added.");
                     }
                     _bits |= 8796093022208L;
                     _AccessControlRequestHeaders = value;
                     return;
                 }
             }
             break;
     }
     Unknown.Add(key, value);
 }
Ejemplo n.º 57
0
 public static void LogSendingFileRange(this ILogger logger, StringValues range, string path)
 {
     _logSendingFileRange(logger, range, path, null);
 }
Ejemplo n.º 58
0
 public bool TryGetValue(string key, out StringValues value)
 {
     value = StringValues.Empty;
     return false;
 }
Ejemplo n.º 59
0
 public void Add(string key, StringValues value) { }
        private static string Get(this IHeaderDictionary headers, string key)
        {
            var values = new StringValues();
            if (!headers.TryGetValue(key, out values))
            {
                return null;
            }

            return values.FirstOrDefault();
        }