cam*_*ior 8 .net c# unity-container asp.net-web-api
我正在尝试使用Unity容器注册HttpClient对象的实例,以便它可以在整个应用程序中使用,但遇到错误 - "类型HttpMessageHandler没有可访问的构造函数."
这是我用来向Unity注册HttpClient的代码 -
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
container.RegisterType<HttpClient>(
new InjectionProperty("BaseAddress", new Uri(ConfigurationManager.AppSettings["ApiUrl"])));
return container;
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,Unity使用具有最多参数的构造函数.那就是HttpClient(HttpMessageHandler, Boolean)你的情况.您需要明确指定无参数默认ctor.
container.RegisterType<HttpClient>(new InjectionProperty(...), new InjectionConstructor());
Run Code Online (Sandbox Code Playgroud)
您可以使用工厂方法来注册它:
container.RegisterType<HttpClient>(
new InjectionFactory(x =>
new HttpClient { BaseAddress = new Uri(ConfigurationManager.AppSettings["ApiUrl"]) }
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4445 次 |
| 最近记录: |