【发布时间】:2018-03-06 19:46:39
【问题描述】:
我需要有两个相同 Web 服务的实例,唯一的区别是 url。我似乎找不到关于如何根据构造函数中的参数名称来区分它的文档。这可能吗?我正在尝试使用 .DependsOn,但是当 Controller 构造函数实例化时,我似乎无法让它工作。
Controller.cs 构造函数:
private Service.IPlanService PlanServiceProd;
private Service.IPlanService PlanServiceDev;
public BackcheckController(Service.IPlanService PlanServiceProd, Service.IPlanService PlanServiceDev)
{
this.PlanServiceProd = PlanServiceProd;
this.PlanServiceDev = PlanServiceDev;
}
Global.asax.cs 代码:
WindsorContainer.Register(Component.For<Service.IPlanService>()
.AsWcfClient()
.Named("PlanServiceDev")
.LifestyleTransient()
.DependsOn(Dependency.OnValue("PlanServiceDev", "PlanServiceDev"))
.DependsOn((k, d) =>
d["EndPoint"] = WcfEndpoint.BoundTo(new WebHttpBinding(WebHttpSecurityMode.Transport) { MaxReceivedMessageSize = 2147483647 })
.At(new Uri(ClientAccountsUriDev, "plans"))
.AddExtensions(new WebHttpBehavior())
.AddExtensions(new ClientCredentialsEndPointBehaviour(ClientId, ClientSecret, ClientAccountsAudience, Issuer))
)
.Interceptors(new Castle.Core.InterceptorReference(typeof(MyCacheInterceptor))).Anywhere
);
WindsorContainer.Register(Component.For<Service.IPlanService>()
.AsWcfClient()
.Named("PlanServiceProd")
.LifestyleTransient()
.DependsOn(Dependency.OnValue("PlanServiceProd", "PlanServiceProd"))
.DependsOn((k, d) =>
d["EndPoint"] = WcfEndpoint.BoundTo(new WebHttpBinding(WebHttpSecurityMode.Transport) { MaxReceivedMessageSize = 2147483647 })
.At(new Uri(ClientAccountsUriProd, "plans"))
.AddExtensions(new WebHttpBehavior())
.AddExtensions(new ClientCredentialsEndPointBehaviour(ClientId, ClientSecret, ClientAccountsAudience, Issuer))
)
.Interceptors(new Castle.Core.InterceptorReference(typeof(MyCacheInterceptor))).Anywhere
);
【问题讨论】:
标签: c# .net asp.net-mvc wcf castle-windsor