Search code examples
.net-coresystem.net.httpwebrequest

What's the alternative to WebRequestHandler in .NET Core?


I was using the WebRequestHandler for setting the CachePolicy and AuthenticationLevel in my full stack .NET application. Now I am migrating my application to .NET core and can't find an alternative to these properties or the WebRequestHandler. Any help? Following is my usage:

        var httpClientHandler = new WebRequestHandler
        {
            UseProxy = true,
            UseCookies = false,
            CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore),
            AuthenticationLevel = AuthenticationLevel.MutualAuthRequired
        };

Solution

  • CachePolicy:

    There is no equivalent to CachePolicy in .NET Core. However, .NET Core is equivalent to RequestCacheLevel.BypassCache. I confirmed that in this GitHub issue.

    So while there is no built-in CachePolicy, this design enables you to build your own cache on top of HttpClient using any policy you like.

    AuthenticationLevel:

    WebRequest in .NET Core offers an AuthenticationLevel property, but that won't help you much if you need to use HttpClient.

    You could implement a custom HttpMessageHandler to pass into HttpClient that supports AuthenticationLevel. To make it easier to implement, you could base it off an existing HttpMessageHandler such as the Windows one.