diff --git a/src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.cs b/src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.cs index a2fd1a61fd53..421af402d8bc 100644 --- a/src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.cs +++ b/src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.cs @@ -89,6 +89,14 @@ await WithConnectionAsync( Assert.Same(httpOptions.Credentials, httpClientHandler.Credentials); } + [Fact] + public void HttpOptionsCannotSetNullCookieContainer() + { + var httpOptions = new HttpConnectionOptions(); + Assert.NotNull(httpOptions.Cookies); + Assert.Throws(() => httpOptions.Cookies = null); + } + [Fact] public async Task HttpRequestAndErrorResponseLogged() { diff --git a/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs b/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs index 1fb9ba10aa66..4375d11285cd 100644 --- a/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs @@ -517,13 +517,14 @@ private HttpClient CreateHttpClient() { httpClientHandler.Proxy = _httpConnectionOptions.Proxy; } - if (_httpConnectionOptions.Cookies != null) + + // Only access HttpClientHandler.ClientCertificates and HttpClientHandler.CookieContainer + // if the user has configured those options + // Some variants of Mono do not support client certs or cookies and will throw NotImplementedException + if (_httpConnectionOptions.Cookies.Count > 0) { httpClientHandler.CookieContainer = _httpConnectionOptions.Cookies; } - - // Only access HttpClientHandler.ClientCertificates if the user has configured client certs - // Mono does not support client certs and will throw NotImplementedException // https://github.com/aspnet/SignalR/issues/2232 var clientCertificates = _httpConnectionOptions.ClientCertificates; if (clientCertificates?.Count > 0)