public VkAuthenticationMiddleware(OwinMiddleware next, AppBuilder app, VkAuthenticationOptions options) : base(next, options) { if (string.IsNullOrWhiteSpace(Options.ClientId)) { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "The '{0}' option must be provided.", "AppId")); } if (string.IsNullOrWhiteSpace(Options.ClientSecret)) { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "The '{0}' option must be provided.", "AppSecret")); } _logger = app.CreateLogger <VkAuthenticationMiddleware>(); if (Options.Provider == null) { Options.Provider = new VkAuthenticationProvider(); } if (Options.StateDataFormat == null) { IDataProtector dataProtector = app.CreateDataProtector( typeof(VkAuthenticationMiddleware).FullName, Options.AuthenticationType, "v1.0.2"); Options.StateDataFormat = new PropertiesDataFormat(dataProtector); } if (String.IsNullOrEmpty(Options.SignInAsAuthenticationType)) { Options.SignInAsAuthenticationType = app.GetDefaultSignInAsAuthenticationType(); } _httpClient = new HttpClient(ResolveHttpMessageHandler(Options)); _httpClient.Timeout = Options.BackchannelTimeout; _httpClient.MaxResponseContentBufferSize = 1024 * 1024 * 10; // 10 MB }