【发布时间】:2012-04-08 16:58:07
【问题描述】:
我想在 Windows 服务中托管我的 WCF 服务库。虽然它将通过本地网络与另一个 wcfservice 通信。
我很难找到最新的文档或为此目的配置解决方案的帮助。任何人都可以建议:
a) 这种连接的首选端点是什么? (另一个 WCF 服务使用 basicHttpBinding 托管)——这本身很适合通过劫持 global.asax 来配置 Castle 容器。但是,将此解决方案托管在 Windows 服务中意味着我不再可以访问 global.asax!
b) 如何配置 Castle Windsor 以在此解决方案中使用 DI?目前我已经研究了将它与 App_Code 的 AppInitilize() 方法以及其他一些不再有效的解决方案挂钩。
当前解决方案架构:
*Core(C# 类库)
*服务(C# 类库)
*WCF 服务(WCF 服务库)
*Windows 服务(Windows 服务项目)
AppInitilize() 的示例代码 [目前似乎无法正常工作]:
public class WindsorConfiguration
{
public static IWindsorContainer Container { get; private set; }
public static void AppInitialize()
{
{
Container = new WindsorContainer()
.AddFacility<WcfFacility>()
.Register(Component.For<IVirusCheckService>().ImplementedBy<VirusCheckService>()
.LifeStyle.Transient
.AsWcfService(new DefaultServiceModel()
.AddBaseAddresses("http://localhost:8080/MyService")
.AddEndpoints(WcfEndpoint.BoundTo(new BasicHttpBinding())
.At("basic"))
.PublishMetadata(o => o.EnableHttpGet())))
.Register(Component.For<ILoggingService>().ImplementedBy<LoggingService>());
}
}
【问题讨论】:
-
真的吗?没有人对此有任何建议吗?!肯定不是那么晦涩难懂吧?
标签: c# wcf windows-services castle-windsor