作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 ConfigureServices 方法中一次添加 httpContextAccessor 与为每个 HttpClient 配置添加 HttpContextAccessor 之间有什么区别。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
// FIRST VERSION
services.AddHttpContextAccessor();
// SECOND VERSION
var myService1 = services.AddHttpClient<TestHttpClient1>(c =>
{
c.BaseAddress = new Uri(Configuration["TestHttpClient1"]);
});
myService1.Services.AddHttpContextAccessor();
var myService2 = services.AddHttpClient<TestHttpClient2>(c =>
{
c.BaseAddress = new Uri(Configuration["TestHttpClient2"]);
});
myService2.Services.AddHttpContextAccessor();
}
最佳答案
Is there any difference between adding the httpContextAccessor one time in ConfigureServices method versus adding the HttpContextAccessor per HttpClient configured.
myService1.Services
和
myService2.Services
两者都引用相同的
IServiceCollection
如
services
多变的。第一个调用(
services.AddHttpContextAccessor()
)将注册服务,但接下来的两个调用(
myService1.Services.AddHttpContextAccessor()
和
myService2.Services.AddHttpContextAccessor()
)将无操作(什么都不做)。
AddHttpClient<TClient>(...)
的源代码的摘录。 (
source ):
var builder = new DefaultHttpClientBuilder(services, name);
// ...
return builder;
DefaultHttpClientBuilder
的新实例被创建,它包含了
IServiceCollection
这是传入的。因为这是一个扩展方法,
services
这里指的是同一个
services
就像你的
ConfigureServices
方法。然后通过
IHttpClientBuilder.Services
暴露出来,这是您在引用时使用的,例如
myService1.Services
.
AddHttpContextAccessor
用途
TryAddSingleton
,仅当服务尚未注册时才会注册该服务(
source ):
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddHttpContextAccessor()
进行了注册。 ,这意味着接下来的两次注册尝试什么都不做。
关于c# - ConfigureServices 中的 AddHttpContextAccessor 与每个 HttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366545/
在 ConfigureServices 方法中一次添加 httpContextAccessor 与为每个 HttpClient 配置添加 HttpContextAccessor 之间有什么区别。 pu
我是一名优秀的程序员,十分优秀!