IIS의 WCF 배포에 대해 배우고 있으며 이상한 것을 발견했습니다. 기본적으로 내 서비스는 web.config에서 요소의 behaviorConfiguration 특성을 설정하는 방법과 상관없이 기본 동작 만 사용합니다.IIS WCF 구성 : 서비스는 기본 동작 만 사용합니다.
그래서 여기 내 Web.config의 관련 부분입니다 :
<system.serviceModel>
<services>
<service name="TableImport" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="" binding="wsHttpBinding" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="false" />
</behavior>
<behavior name="MyServiceTypeBehaviors" >
<serviceMetadata httpGetEnabled="true" policyVersion="Policy15" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
기본 serviceMetadata 요소가 볼 수 있듯이 httpGetEnabled = MyServiceTypeBehaviors serviceMetadata 요소가 httpGetEnabled = "true"를 가지고 "false"를 반면. 내 서비스의 behaviorConfiguration 속성이 "MyServiceTypeBehaviors"로 설정되어 있는지 확인할 수도 있습니다.
결과적으로 내 서비스는 브라우저를 통해 메타 데이터를 게시하고 Visual Studio의 "서비스 참조 추가"기능을 통해 메타 데이터가없는 동일한 결과를 얻을 수 있습니다.
반면에 메타 데이터를 기본 동작으로 설정하고 "MyServiceTypeBehaviors"에서 메타 데이터를 사용하지 않도록 설정하고 MyServiceTypeBehaviors를 계속 사용하도록 설정 한 경우 브라우저와 VS를 통해 메타 데이터를 모두받습니다.
내게이 테스트는 설정 파일을 어떻게 설정했는지 상관없이 내 서비스가 기본 동작을 사용함을 나타냅니다. 그러나 동시에 할 수 있습니다. 을 기본 동작으로 변경할 수 있습니다. 내 web.config 실제로 서비스 작동 방식에 영향을 줄 수 있습니다. 어떤 아이디어?
당신이 기본 동작을 제거하면 어떻게됩니까 :
이 상황에서 가장 쉬운 해결책은 간단하게 정의하려고하는 엔드 포인트에 대한 계약을 추가하는 것입니다 :이 문제 설명과 일치? 당신의 특정 행동이 호응합니까? – evgenyl
기본 동작을 제거하고 MyServiceTypeBehaviors 및 MyServiceTypeBehaviors 만 메타 데이터를 사용하도록 설정하면 결과에 메타 데이터가 표시되지 않습니다. 그래서 내 평가는 기본 동작을 제거해도 내 특정 동작이 올바르게 작동하지 않는다는 것입니다. –
기본 behsvior 및 정책 버전을 제거하려고합니다. – evgenyl