세 개의 어셈블리를 만들었습니다. 웹 사이트, WCF 서비스 및 서비스가 구현하는 인터페이스를 보유하는 계약 어셈블리. Castle Windsor를 사용하여 클라이언트 (웹 사이트)에서 나를 위해 서비스를 만들고 싶습니다. 사용하려는 각 서비스에 대한 웹 사이트의 web.config에 끝점이 없어도됩니다.Castle Windsor WcfFacility를 사용하여 클라이언트 끝점 생성
나는 계약 어셈블리를보고 네임 스페이스의 모든 서비스 인터페이스를 얻고 싶습니다. 현재 모든 서비스에 대해 컨테이너에 구성 요소를 등록 할 때 다음과 같은 항목이 있습니다.
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);
내 web.config에는 설정 코드가 있습니다.
<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>
나는 모두가 거의 정확히 같은 모양과 우리가 클라이언트 컴퓨터에 배포 할 때 그들은 기본 URL은 모두 동일하다하더라도 모든 엔드 포인트의 주소를 설정해야합니다 여러 서비스 엔드 포인트와 끝까지.
내 web.config에 코드를 통해 가져온 기본 URL을 갖고 싶습니다. 그러면 계약 어셈블리에서 리플렉션을 사용하여 컨테이너에 등록 된 서비스가 있습니다. 위의 설정 파일에있는 특수한 엔드 포인트 동작이 필요합니다.
어디부터 시작하니? WcfFacility는 좋아 보이지만 도코는 조금 부족합니다 ...
유사한 작동 매력, 대단히 감사합니다. –
이것은 무엇을합니까? (f => f.CloseTimeout = TimeSpan.Zero) –
모든 서비스에 대한 기본 클로우 타임 아웃을 설정합니다. "닫기 작업이 완료 될 때까지 제공되는 시간 간격을 지정하는 TimeSpan 값입니다. 0과 같습니다. 기본값은 00:01:00입니다. " - http://msdn.microsoft.com/ko-kr/library/ms731361.aspx. 또한 가능한 모든 시간 초과에 대해 이야기하는 좋은 스레드가 있습니다. http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/ – kmp