コード例 #1
0
        public void Add(string header)
        {
            if (string.IsNullOrEmpty(header))
            {
                throw new ArgumentNullException(nameof(header));
            }
            int colpos = header.IndexOf(':');

            // check for badly formed header passed in
            if (colpos < 0)
            {
                throw new ArgumentException(SR.net_WebHeaderMissingColon, nameof(header));
            }
            string name  = header.Substring(0, colpos);
            string value = header.Substring(colpos + 1);

            name = HttpValidationHelpers.CheckBadHeaderNameChars(name);
            ThrowOnRestrictedHeader(name);
            value = HttpValidationHelpers.CheckBadHeaderValueChars(value);
            if (NetEventSource.IsEnabled)
            {
                NetEventSource.Info(this, $"Add({header}) calling InnerCollection.Add() key:[{name}], value:[{value}]");
            }
            if (_type == WebHeaderCollectionType.WebResponse)
            {
                if (value != null && value.Length > ushort.MaxValue)
                {
                    throw new ArgumentOutOfRangeException(nameof(value), value, string.Format(CultureInfo.InvariantCulture, SR.net_headers_toolong, ushort.MaxValue));
                }
            }
            InvalidateCachedArrays();
            InnerCollection.Add(name, value);
        }
コード例 #2
0
        public override void Add(string name, string value)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (name.Length == 0)
            {
                throw new ArgumentException(SR.Format(SR.net_emptyStringCall, nameof(name)), nameof(name));
            }

            name = HttpValidationHelpers.CheckBadHeaderNameChars(name);
            ThrowOnRestrictedHeader(name);
            value = HttpValidationHelpers.CheckBadHeaderValueChars(value);
            if (NetEventSource.IsEnabled)
            {
                NetEventSource.Info(this, $"calling InnerCollection.Add() key:[{name}], value:[{value}]");
            }
            if (_type == WebHeaderCollectionType.WebResponse)
            {
                if (value != null && value.Length > ushort.MaxValue)
                {
                    throw new ArgumentOutOfRangeException(nameof(value), value, string.Format(CultureInfo.InvariantCulture, SR.net_headers_toolong, ushort.MaxValue));
                }
            }
            InvalidateCachedArrays();
            InnerCollection.Add(name, value);
        }
コード例 #3
0
#pragma warning disable CS8765 // Nullability of parameter 'name' doesn't match overridden member
        public override void Set(string name, string?value)
#pragma warning restore CS8765
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name));
            }

            name  = HttpValidationHelpers.CheckBadHeaderNameChars(name);
            value = HttpValidationHelpers.CheckBadHeaderValueChars(value);
            InvalidateCachedArrays();
            InnerCollection.Set(name, value);
        }
コード例 #4
0
 protected void AddWithoutValidate(string name, string value)
 {
     name = HttpValidationHelpers.CheckBadHeaderNameChars(name);
     value = HttpValidationHelpers.CheckBadHeaderValueChars(value);
     if (NetEventSource.IsEnabled) NetEventSource.Info(this, $"calling InnerCollection.Add() key:[{name}], value:[{value}]");
     if (_type == WebHeaderCollectionType.WebResponse)
     {
         if (value != null && value.Length > ushort.MaxValue)
         {
             throw new ArgumentOutOfRangeException(nameof(value), value, string.Format(CultureInfo.InvariantCulture, SR.net_headers_toolong, ushort.MaxValue));
         }
     }
     InvalidateCachedArrays();
     InnerCollection.Add(name, value);
 }
コード例 #5
0
 public override void Add(string name, string value)
 {
     name = HttpValidationHelpers.CheckBadHeaderNameChars(name);
     ThrowOnRestrictedHeader(name);
     value = HttpValidationHelpers.CheckBadHeaderValueChars(value);
     if (GlobalLog.IsEnabled)
     {
         GlobalLog.Print("WebHeaderCollection::Add() calling InnerCollection.Add() key:[" + name + "], value:[" + value + "]");
     }
     if (_type == WebHeaderCollectionType.WebResponse)
     {
         if (value != null && value.Length > ushort.MaxValue)
         {
             throw new ArgumentOutOfRangeException(nameof(value), value, string.Format(CultureInfo.InvariantCulture, SR.net_headers_toolong, ushort.MaxValue));
         }
     }
     InvalidateCachedArrays();
     InnerCollection.Add(name, value);
 }
コード例 #6
0
#pragma warning disable CS8765 // Nullability of parameter 'name' doesn't match overridden member
        public override void Set(string name, string?value)
#pragma warning restore CS8765
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name));
            }

            name = HttpValidationHelpers.CheckBadHeaderNameChars(name);
            ThrowOnRestrictedHeader(name);
            value = HttpValidationHelpers.CheckBadHeaderValueChars(value);
            if (_type == WebHeaderCollectionType.WebResponse)
            {
                if (value != null && value.Length > ushort.MaxValue)
                {
                    throw new ArgumentOutOfRangeException(nameof(value), value, SR.Format(CultureInfo.InvariantCulture, SR.net_headers_toolong, ushort.MaxValue));
                }
            }
            InvalidateCachedArrays();
            InnerCollection.Set(name, value);
        }
コード例 #7
0
        public string this[string name]
        {
            get
            {
                string entry = null;
                _entriesDictionary?.TryGetValue(name, out entry);
                return(entry);
            }
            set
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new ArgumentNullException(nameof(name));
                }

                name  = HttpValidationHelpers.CheckBadHeaderNameChars(name);
                value = HttpValidationHelpers.CheckBadHeaderValueChars(value);

                InvalidateCachedArray();
                EnsureInitialized();

                if (!_entriesDictionary.ContainsKey(name))
                {
                    Debug.Assert(_entriesList.FindIndex(s => StringComparer.OrdinalIgnoreCase.Equals(s, name)) == -1,
                                 $"'{name}' must not be in {nameof(_entriesList)}.");

                    // Only add the name to the list if it isn't already in the dictionary.
                    _entriesList.Add(name);
                }

                _entriesDictionary[name] = value;

                Debug.Assert(_entriesList.FindIndex(s => StringComparer.OrdinalIgnoreCase.Equals(s, name)) != -1,
                             $"'{name}' must be in {nameof(_entriesList)}.");

                Debug.Assert(_entriesDictionary.Count == _entriesList.Count, "Counts must be equal.");
            }
        }