| File: Timeouts\RequestTimeoutOptions.cs | Web Access |
| Project: src\aspnetcore\src\Http\Http\src\Microsoft.AspNetCore.Http.csproj (Microsoft.AspNetCore.Http) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Microsoft.AspNetCore.Http.Timeouts; /// <summary> /// Specifies options for the request timeouts middleware. /// </summary> public sealed class RequestTimeoutOptions { /// <summary> /// Applied to any request without a policy set via endpoint metadata. No value by default. /// </summary> public RequestTimeoutPolicy? DefaultPolicy { get; set; } /// <summary> /// Dictionary of policies that would be applied per endpoint. /// Policy names are case-insensitive. /// </summary> public IDictionary<string, RequestTimeoutPolicy> Policies { get; } = new Dictionary<string, RequestTimeoutPolicy>(StringComparer.OrdinalIgnoreCase); /// <summary> /// Adds a new policy. /// </summary> /// <param name="policyName">The name of the policy (case-insensitive).</param> /// <param name="timeout">The timeout to apply for this policy.</param> public RequestTimeoutOptions AddPolicy(string policyName, TimeSpan timeout) { return AddPolicy(policyName, new RequestTimeoutPolicy { Timeout = timeout }); } /// <summary> /// Adds a new policy. /// </summary> /// <param name="policyName">The name of the policy (case-insensitive).</param> /// <param name="policy">The <see cref="RequestTimeoutPolicy"/> policy to be added.</param> public RequestTimeoutOptions AddPolicy(string policyName, RequestTimeoutPolicy policy) { ArgumentNullException.ThrowIfNull(policy); ArgumentException.ThrowIfNullOrEmpty(policyName); Policies[policyName] = policy; return this; } }