/// <inheritdoc />
        public void Append(string key, string value)
        {
            var setCookieHeaderValue = new SetCookieHeaderValue(
                Uri.EscapeDataString(key),
                Uri.EscapeDataString(value))
            {
                Path = "/"
            };

            string cookieValue;
            if (_builderPool == null)
            {
                cookieValue = setCookieHeaderValue.ToString();
            }
            else
            {
                var stringBuilder = _builderPool.Get();
                try
                {
                    setCookieHeaderValue.AppendToStringBuilder(stringBuilder);
                    cookieValue = stringBuilder.ToString();
                }
                finally
                {
                    _builderPool.Return(stringBuilder);
                }
            }

            Headers[HeaderNames.SetCookie] = StringValues.Concat(Headers[HeaderNames.SetCookie], cookieValue);
        }
        public void SetCookieHeaderValue_AppendToStringBuilder(SetCookieHeaderValue input, string expectedValue)
        {
            var builder = new StringBuilder();

            input.AppendToStringBuilder(builder);

            Assert.Equal(expectedValue, builder.ToString());
        }
示例#3
0
        public void SetCookieHeaderValue_AppendToStringBuilder_SameSiteNoneCompat()
        {
            SetCookieHeaderValue.SuppressSameSiteNone = true;

            var builder = new StringBuilder();
            var input   = new SetCookieHeaderValue("name", "value")
            {
                SameSite = SameSiteMode.None,
            };

            input.AppendToStringBuilder(builder);
            Assert.Equal("name=value", builder.ToString());

            SetCookieHeaderValue.SuppressSameSiteNone = false;

            var builder2 = new StringBuilder();
            var input2   = new SetCookieHeaderValue("name", "value")
            {
                SameSite = SameSiteMode.None,
            };

            input2.AppendToStringBuilder(builder2);
            Assert.Equal("name=value; samesite=none", builder2.ToString());
        }
        /// <inheritdoc />
        public void Append(string key, string value, CookieOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var setCookieHeaderValue = new SetCookieHeaderValue(
                Uri.EscapeDataString(key),
                Uri.EscapeDataString(value))
            {
                Domain = options.Domain,
                Path = options.Path,
                Expires = options.Expires,
                Secure = options.Secure,
                HttpOnly = options.HttpOnly,
            };

            string cookieValue;
            if (_builderPool == null)
            {
                cookieValue = setCookieHeaderValue.ToString();
            }
            else
            {
                var stringBuilder = _builderPool.Get();
                try
                {
                    setCookieHeaderValue.AppendToStringBuilder(stringBuilder);
                    cookieValue = stringBuilder.ToString();
                }
                finally
                {
                    _builderPool.Return(stringBuilder);
                }
            }

            Headers[HeaderNames.SetCookie] = StringValues.Concat(Headers[HeaderNames.SetCookie], cookieValue);
        }