Tôi đã tạo ra ba hội đồng. Một trang web, một dịch vụ WCF và một hội đồng hợp đồng chứa các giao diện mà các dịch vụ thực hiện. Tôi muốn sử dụng Castle Windsor để tạo các dịch vụ cho tôi trên máy khách (website) để tôi không phải có điểm cuối trong web.config của trang web cho mỗi dịch vụ mà tôi muốn sử dụng.Sử dụng Castle Windsor Wcf Tính linh hoạt để tạo điểm cuối của khách hàng
Tôi muốn xem hợp đồng lắp ráp và nhận tất cả các giao diện dịch vụ trong không gian tên. Ngay bây giờ cho mỗi dịch vụ tôi có một cái gì đó như sau khi đăng ký các thành phần với container.
container.Register(Component.For<ChannelFactory<IMyService>>().DependsOn(new { endpointConfigurationName = "MyServiceEndpoint" }).LifeStyle.Singleton);
container.Register(Component.For<IMyService>().UsingFactoryMethod((kernel, creationContext) => kernel.Resolve<ChannelFactory<IMyService>>().CreateChannel()).LifeStyle.PerWebRequest);
và trong web.config của tôi Tôi có mã thiết lập.
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="AuthToken" type="MyNamespace.Infrastructure.AuthTokenBehavior, MyNamespace.Contracts" />
</behaviorExtensions>
</extensions>
<behaviors>
<endpointBehaviors>
<behavior>
<AuthToken />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647"></readerQuotas>
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint name="MyServiceEndpoint" address="http://someurl/MyService.svc" binding="wsHttpBinding" contract="MyNamespace.Contracts.IMyService"></endpoint>
</client>
</system.serviceModel>
tôi kết thúc với nhiều điểm cuối dịch vụ mà tất cả nhìn gần như giống hệt nhau và khi chúng tôi triển khai vào máy khách máy họ phải thiết lập địa chỉ của tất cả các thiết bị đầu cuối cho dù url cơ bản là giống nhau cho mỗi người.
Tôi muốn có một url cơ sở trong web.config của mình được lấy qua mã và sau đó có các dịch vụ đã đăng ký với vùng chứa sử dụng sự phản ánh trên bản hợp đồng. Tôi cần các hành vi điểm cuối chuyên ngành đó là trong tập tin cấu hình trên.
Tôi bắt đầu từ đâu? các WcfFacility trông tuyệt vời nhưng doco là một chút thiếu ...
hoạt động như một quyến rũ, cảm ơn bạn rất nhiều. –
việc này sẽ làm gì? (f => f.CloseTimeout = TimeSpan.Zero) –
Điều đó đặt thời gian đóng mặc định cho tất cả các dịch vụ - đây là "Giá trị TimeSpan chỉ định khoảng thời gian được cung cấp cho một thao tác đóng để hoàn thành. Giá trị này phải lớn hơn hoặc bằng Zero. Mặc định là 00:01:00. " - từ http://msdn.microsoft.com/en-us/library/ms731361.aspx. Ngoài ra, đây là một chủ đề hay nói về tất cả thời gian chờ có thể có: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/ – kmp