【发布时间】:2013-11-19 14:46:47
【问题描述】:
我在我的 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 在单例范围内注入依赖项,但这不是重点。
【问题讨论】:
-
工作代码应该移动到Code Review
-
据此msdn.microsoft.com/pl-pl/library/… 实例成员不保证是线程安全的。你确定不会遇到并发问题吗?
-
@WiktorZychla - HttpClient 充当所有 HTTP 请求的会话。此外,HTTP 操作的所有方法都是线程安全的,如您提供的同一链接中所述。
标签: c# singleton .net-4.5 dotnet-httpclient