我在我的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在单例作用域中注入依赖项,但除了这一点之外。
答案 0 :(得分:3)
在您提出第一个请求后,您无法更改一些属性。我认为超时可能是其中之一,所以要注意这一点。
您还需要注意,个别请求不会混淆DefaultRequestHeaders,因为这可能会混淆其他请求。
尝试共享HttpClient实例总是一个好主意。创建一个单例是一个极端的例子,但小心它应该适合你。