2014-01-20 4 views
0

eMedNy's SOAP 웹 서비스를 사용하기 위해 C#에서 WCF 클라이언트를 빌드하려고합니다. WSDL은 여기에 있습니다 : 나는 svcutil를 실행하려고하면 https://service100.emedny.org:9047/MHService?wsdlsvcutil이 usernameToken 정책에 걸렸습니다

나는이 오류가 발생합니다 :

Warning: The following Policy Assertions were not Imported:
XPath://wsdl:definitions[@targetNamespace= http://org/emedny/mhs/ ]/wsdl:binding[@name='MHS']
Assertions:
<dpe:summary xmlns:dpe='http://www.datapower.com/extensions'> .. </dpe:summary>
<sp:SupportingTokens xmlns:sp='http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702'> .. </sp:SupportingTokens>

내가 읽은 어떤이는 소화와 usernameToken에 대한 지원의 WCF의 부족과 함께 할 수있는 뭔가가에서 암호.

이 문제를 극복하고 프록시를 설정하고 app.config을 어떻게 진행할 수 있습니까?

답변

1

WSDL 및 참조 된 WSDL/스키마를 디스크에 로컬로 저장하십시오. ("가져 오기"및 "포함"요소를 따라 참조 된 파일을 찾을 수 있습니다.) 디스크에 저장 한 후 참조를 확인하십시오. 예를 들어 가져 오기 태그가 http://www.server.com/1.WSDL이고 디스크에 1.wsdl로 저장 한 경우 로컬 디스크를 가리 키도록 가져 오기 태그를 변경하십시오. 그런 다음 WSDL에서 모든 정책 태그를 삭제하십시오 (실제로는 하나만 - 루트 정책 태그와 모든 하위 태그). 이제 로컬 디스크의 루트 WSDL에서 서비스 참조를 추가 할 수 있어야합니다.

편집 : 귀하의 의견에 따라 문제는 이제 프록시를 생성하지 않고 보안을 구성합니다. 귀하의 링크를 기반으로 이것은 매우 복잡한 보안 구성입니다. this link을 기본 제본으로보십시오. 그런 다음 include this을 사용하여 이진 토큰을 직렬화 된 것으로 표시합니다 (InclusionMode 및 ReferenceStyle을 변경해야 할 수도 있음). 정확한 형식을 얻으려면 몇 가지 조정이 필요할 수 있습니다. 어느 단계에서든 Fiddler 또는 WCF 로그를 사용하여 요청이 원하는 SOAP 형식과 정렬되는 방식을 확인할 수 있습니다.

+0

원격 URL을 참조하여 현재 내가 얻는 결과와 다른 결과를 얻을 수 있습니까? 지금은 경고를 받지만'svcutil'은 여전히 ​​진행되고 프록시와'app.config'를 만듭니다. –

+0

참조 된 스키마와 함께 WSDL을 다운로드하면 6000 개의 파일이 제공되고 계산됩니다. 최종 결과가 현재와 같으면 걱정하지 않으려 고합니다. 아마도 실제 질문은 구성하는 방법이 될 것입니다. 'svcutil'이 나를 위해 그것을 할 수 없기 때문에 (프록시?)'app.config'의 보안 측면을 설명합니다. 질문이 다른 것보다 프록시가 컴파일 된 경우 –

+0

이 맞습니다. 바인딩을 구성하는 방법입니다. 이를 알기 위해서는 공급 업체에게 SOAP 샘플 작업을 제공하고 여기에 게시하도록 요청하십시오. –