- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
尝试在 StructureMap ala 中定义一个 HttpClient 单例:
For<HttpClient>().Singleton().UseIfNone<HttpClient>();
这会导致运行时出现以下错误(依赖注入(inject)时):
StructureMap.StructureMapConfigurationException: No default Instance is registered and cannot be automatically determined for type 'System.Net.Http.HttpMessageHandler'
There is no configuration specified for System.Net.Http.HttpMessageHandler
1.) new HttpClient(*Default of HttpMessageHandler*)
2.) System.Net.Http.HttpClient
3.) Instance of System.Net.Http.HttpClient
4.) new AdmanAdapter(*Default of HttpClient*)
5.) Organotiki.vNext.PostEval.Data.Adapters.ADMAN.AdmanAdapter
6.) Instance of [....]
at lambda_method(Closure , IBuildSession , IContext )
at StructureMap.Building.BuildPlan.Build(IBuildSession session, IContext context)
at StructureMap.BuildSession.BuildNewInSession(Type pluginType, Instance instance)
at StructureMap.Pipeline.NulloTransientCache.Get(Type pluginType, Instance instance, IBuildSession session)
at StructureMap.BuildSession.ResolveFromLifecycle(Type pluginType, Instance instance)
at StructureMap.SessionCache.GetObject(Type pluginType, Instance instance, ILifecycle lifecycle)
如果我们也像这样配置 HttpMessageHandler:
For<HttpClient>().Singleton().UseIfNone<HttpClient>();
For<HttpMessageHandler>().UseIfNone(x => new HttpClientHandler());
然后问题就解决了。问题是为什么? HttpClient 的默认构造函数负责其自身的依赖注入(inject):
/// <summary>Initializes a new instance of the <see cref="T:System.Net.Http.HttpClient" /> class.</summary>
[__DynamicallyInvokable]
public HttpClient()
: this((HttpMessageHandler) new HttpClientHandler())
{
}
我是不是漏掉了什么?
最佳答案
来自 http://structuremap.github.io/registration/constructor-selection 的结构图文档
If there are multiple public constructor functions on a concrete class, StructureMap's default behavior is to select the "greediest" constructor, i.e., the constructor function with the most parameters.
如果您查看HttpClient
的可能构造函数,它应该是
public HttpClient();
public HttpClient(HttpMessageHandler handler);
public HttpClient(HttpMessageHandler handler, bool disposeHandler);
关于c# - 通过 StructureMap 定义 'HttpClient' 单例导致运行时未配置 'HttpMessageHandler' 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54024716/
我正在尝试模拟 HttpMessageHandler 以便使用 HttpClient 测试类。 模拟似乎有效并且结果不错,但是当验证方法 SendAsunc 被调用的次数时,它返回 0 而不是 1..
我需要根据使用应用程序的最终用户在应用程序运行时传递网络凭据以模拟域用户。我无法弄清楚如何通过与单个用户相关联的 Services.AddHttpClient 和 HttpClientFactory
DelegatingHandler继承自 HttpMessageHandler .但是,我不明白其中的区别,因为您必须实现相同的方法,SendAsync使两者都起作用。 这两个处理程序有什么区别?我应
如果我在 HttpMessageHandler 中有一个异步调用,它是否应该使用 .ConfigureAwait 方法,例如 /// /// Handler to assign the MD5 ha
我在类库中有一个自定义的 DelegatingHandler,我需要用 Autofac 注册它。 webapi 宿主解决了它对运行时的依赖,因此宿主没有对该库的引用。 public class Loc
HttpClient需要 HttpMessageHandler它的两个构造函数中的参数。 有没有什么简单的方法可以在创建 HttpClient 之后更改处理程序而不创建新的 HttpClient 实例
对于基本身份验证,我已经实现了自定义 HttpMessageHandler基于 Darin Dimitrov 的答案中显示的示例:https://stackoverflow.com/a/1153634
在 ASP.NET 4.5 MVC 4 Web API 项目中,我想添加自定义 HttpMessageHandler。我更改了 WebApiConfig 类(在\App_Satrt\WebApiCon
在决定我想为测试发回什么样的响应之前,有没有办法获取http请求的内容?多个测试将使用此类,每个测试将有多个 http 请求。此代码无法编译,因为 lambda 不是异步的,并且其中有一个等待。我是
我有一个单元测试,它通过传入 HttpRequestMessage 实例并接收返回的 HttpResponseMessages 实例来调用类库。在这方面,它与测试 WebApi ApiControll
我在 .NET Core 2.1 应用程序上有一份夜间工作,向 https://server/api/values 发出请求此请求应该从服务器到服务器本身完成(一种 TestServer 行为),没有
我有一个使用 HttpClient 的控制台应用程序发出网络请求。 var client = new HttpClient(); 我正在尝试添加多个 HttpMessageHandler到它( Del
作为我正在处理的 ASP.Net Core 项目的一部分,我需要从我的 WebApi 中与许多不同的基于 Rest 的 API 端点进行通信。为了实现这一点,我使用了许多服务类,每个服务类都实例化一个
看来这两者有着相似的目的。如果能看到一些示例,了解何时使用其中一种的优点和缺点,并指出主要区别是什么,那就太好了。 最佳答案 The major difference between their tw
尝试在 StructureMap ala 中定义一个 HttpClient 单例: For().Singleton().UseIfNone(); 这会导致运行时出现以下错误(依赖注入(inject)时
对于开发人员, 我会 mock HttpMessageHandler 来测试 HttpClient,我的问题是我将如何根据 URL 和 Http 方法?所以响应将是方法和 URL 的函数: Get +
我在工厂注册我的 HttpClient: services.AddHttpClient() .SetHandlerLifetime(TimeSpan.FromMinutes(2)); 这个 I
请任何人告诉我以下三个模块如何在 asp.net Web API 2.1 中协同工作 欧文中间件 HttpMessageHandler(或 DelegatingHandler) 异常处理程序 我正在尝
在不使用 ASP.NET Core 的 DI 的情况下,您可以使用其构造函数将包含 cookie 容器的 ClientHandler 放入 HttpClient 对象中,类似于以下内容:
我是一名优秀的程序员,十分优秀!