2009-08-26 2 views
2

사용자 지정 바인딩을 만들고이를 App.config를 통해 구성 할 수있게하려고합니다.App.config를 통해 사용자 지정 바인딩을 구성 할 수 있도록 만들기

바인딩은 순간에 특별한 옵션이 없다, 그래서, 나는이 <BindingExtension>를 통해 구성 지원을 활성화 할 필요가 있음을 발견 단지

<endpoint address="http://myAddress" 
      binding="myBinding" 
      contract="myContract"> 

일부 사이트를 확인한 후 지원하기 위해 충분하다.

구성 바인딩 확장 '시스템 : 프로그램을 실행하려고 할 때 나는

<extensions> 
    <bindingExtensions> 
    <add name="myBinding" 
     type="MyNamespace.MyHttpBinding, NameOfMyDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> 
    </bindingExtensions> 
</extensions> 

를 추가 할 때 때문에, MSDN 사이트가 많은 도움이되지 않았다, 나는 단지 다음과 같은 오류 메시지가 나타납니다 .serviceModel/bindings/myBinding '을 (를) 찾을 수 없습니다. 이 바인딩 확장이 system.serviceModel/extensions/bindingExtensions에 제대로 등록되어 있고 철자가 올바른지 확인하십시오.

bindingExtension에 언급 된 유형은 Binding에서 상속되는 유형을 가리 킵니다.

바인딩에 대한 구성 지원을 사용하려면 무엇을 추가해야합니까?


Update

내 목표는 내가 설정 파일에 바인딩을 수출 할 수있을 것입니다. 바인딩에 대한 특별한 설정을 허용하고 싶지 않습니다. 설정 파일의 <endpoint> 태그를 통해 사용할 수 있어야합니다.

I've uploaded a minimal sample project where the bug occurs tomegaupload.

답변

3

당신은 올바른 길을 가고 있습니다. 그러나 중요한 점은 bindingExtension 요소가 바인딩 클래스 자체를 직접 가리켜서는 안된다는 것입니다.

대신 구성 모델을 지원하는 여러 클래스가 있어야합니다. 처음 등록하는 bindingExtension은 실제로 StandardBindingCollectionElement에서 상속받은 클래스입니다. 이것은 StandardBindingElement의 콜렉션을 나타내며, 바인딩은 .config 파일에서 바인딩이 지원하는 모든 구성 등록 정보를 가지며, Binding 인스턴스를 작성하고 .config 파일에 설정된 모든 등록 정보를 설정합니다. 파일.

또한 트랜스 포트 채널을 사용하는 경우 TransportBindingElement의 구성보기를 만드는 데 비슷한 패턴을 따르므로 구성을 통해 사용자 지정 바인딩을 만들 수 있습니다. 이 경우 TransportElement을 상속받은 클래스가 있습니다.

P. 많은 설정이있는 경우 이것이 반복적 인 코드라고 생각한다면, 나는 동의한다.

업데이트 : 발견 된 문제 : 구성 파일에 적어도 < bindings/> 섹션이 필요합니다. 그냥 추가하면 바인딩이 인식됩니다.

+0

일반적으로하는 일은 효과가 있습니다. WebServiceHost를 사용하지 않고 시도해 보셨습니까? – tomasr

+0

예, ServiceHost에서도 시도했습니다. 문제가 지속됩니다. 나는 "foobar"와 같은 무의미한 것에 확장의 "type"속성을 변경하더라도 오류 메시지가 변경되지 않는다는 것을 알아 챘습니다. Additionaly, 나는 바인딩의 dll을 전역 어셈블리 캐시에 추가하려고 시도했다. 여전히 동일한 오류 메시지 :-( – Etan

+0

바인딩 확장과 같은 소리가 전혀로드되지 않습니다. 아마도 fuslogvw.exe를 사용하여 어셈블리가로드되지 않았는지 확인하려고 했습니까? WCF는 어셈블리 이름 작성 방법에 대해 까다 롭습니다. 설정 확장을 등록 할 때 – tomasr

관련 문제