我的HttpClient单例实现是否合适?

时间:2013-11-19 14:46:48

标签: c# singleton .net-4.5 dotnet-httpclient

我在我的MVC4项目中使用System.Net.HttpClient(.Net 4.5)。我知道HttpClient的单个实例可以用于Web应用程序中的所有Http请求。这是我对HttpClient单例的实现,它应该每次返回单个实例。

 public sealed class HttpClientInstance: HttpClient
{
    // singleton instance
    private static readonly HttpClientInstance instance = new HttpClientInstance();

    static HttpClientInstance() { }

    private HttpClientInstance() : base() {
        Timeout = TimeSpan.FromMilliseconds(15000)));
    }
    /// <summary>
    /// Returns the singleton instance of HttpClient
    /// </summary>
    public static HttpClient Instance
    {
        get
        {
            return instance;
        }
    }
}

你觉得这有什么问题吗?

我知道我可以使用Ninject在单例作用域中注入依赖项,但除了这一点之外。

1 个答案:

答案 0 :(得分:3)

在您提出第一个请求后,您无法更改一些属性。我认为超时可能是其中之一,所以要注意这一点。

您还需要注意,个别请求不会混淆DefaultRequestHeaders,因为这可能会混淆其他请求。

尝试共享HttpClient实例总是一个好主意。创建一个单例是一个极端的例子,但小心它应该适合你。