我有一个控制台应用程序,使用HttpClient进行网络请求。
但是这个无法编译:
因为我正在使用.NET 4.0,所以无法使用HttpClientFactory,这通常是解决此问题的方法。
因为我只是在控制台应用程序中,而不是在ASP.NET应用程序中,所以我也无法做到这一点:
我已经查看了HttpClientFactory的源代码,似乎没有任何东西无法在.NET 4.0中编译,但是除非自己编写一个(受Microsoft源代码启发的)工厂,否则是否有一种手动添加多个HTTP消息处理程序到HttpClient的方法?
var client = new HttpClient();
我正在尝试向其中添加多个HttpMessageHandler(实际上是自定义实现的DelegatingHandler),但是HttpClient的构造函数只接受单个HttpMessageHandler。
class LoggingHandler : DelegatingHandler { //... }
class ResponseContentProcessingHandler : DelegatingHandler { //... }
这是可以的...
var client = new HttpClient(new LoggingHandler()); // OK
但是这个无法编译:
var client = new HttpClient(
new LoggingHandler(),
new ResponseContentProcessingHandler()); // Sadness
因为我正在使用.NET 4.0,所以无法使用HttpClientFactory,这通常是解决此问题的方法。
HttpClient client = HttpClientFactory.Create(
new LoggingHandler(),
new ResponseContentProcessingHandler());
因为我只是在控制台应用程序中,而不是在ASP.NET应用程序中,所以我也无法做到这一点:
GlobalConfiguration.Configuration
.MessageHandlers
.Add(new LoggingHandler()
.Add(new ResponseContentProcessingHandler());
我已经查看了HttpClientFactory的源代码,似乎没有任何东西无法在.NET 4.0中编译,但是除非自己编写一个(受Microsoft源代码启发的)工厂,否则是否有一种手动添加多个HTTP消息处理程序到HttpClient的方法?
GlobalConfiguration.Configuration.MessageHandlers
吗?因为我说我做不到。HTTP协议与此有什么关系? - Jeff