저는 Service Reference를 처음 사용하므로 간단한 설명이 필요할 수 있습니다.
WSDL이 있습니다.
https://test.servicebench.com/servicebenchv5/services/CRMServiceOrderService?wsdl
문제없이 MVS2013을 통해 내 프로젝트에 서비스 참조를 추가했습니다.
다음은 자동 생성 된 app.config 파일입니다.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="CRMServiceOrderBinding">
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport />
</binding>
</customBinding>
</bindings>
<client>
<endpoint
address="https://test.servicebench.com/servicebenchv5/services/CRMServiceOrderService"
binding="customBinding"
bindingConfiguration="CRMServiceOrderBinding"
contract="ServiceBenchReference.CRMServiceOrderPortType"
name="CRMServiceOrderPort" />
</client>
</system.serviceModel>
</configuration>
이제 서버에 대한 모든 요청이 "승인되지 않음"으로 응답합니다.
SOAP 요청 헤더에 필요한 자격 증명을 전달하지 않았기 때문이라고 확신합니다.
3 개의 자격 증명 (또는 정보?)을 전달해야합니다 : ServiceBenchID, UserID 및 암호.
나는 사용을 시도했다 :
CRMServiceOrderPortTypeClient ServiceOrder = new CRMServiceOrderPortTypeClient();
ServiceOrder.ClientCredentials.UserName.UserName = myUserID;
ServiceOrder.ClientCredentials.UserName.password = myPassword;
하지만 작동하지 않았습니다. Fiddler를 통해 요청을 확인했지만 헤더에 전달 된 자격 증명을 보지 못했습니다.
그래서 여기에 내 질문이 있습니다.이 세 가지 사용자 지정 자격 증명 정보를 헤더에 올바르게 전달할 수 있습니까? (그래서 서버에서 응답을받습니다)
몇 시간 더 검색 한 후 적절한 솔루션을 찾을 수있었습니다!
코드 조각에 대해 Thorarin에게 감사드립니다.
헤더의 사용자 이름 / 암호를 SOAP WCF 서비스에 전달하는 방법
app.config 파일에 사용자 정의 바인딩이 있으면 보안 요소를 수동으로 추가해야하는 것 같습니다. 최선의 방법이라고는 생각하지 않지만 이렇게 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다