2016-10-25 2 views
1

사용자 지정 WCF 인증을 사용하여 Castle Windsor 등록을 통해 사용자 이름과 암호를 전달하는 데 문제가 있습니다.사용자 이름 자격 증명을 전달하는 방법 Castle Windsor를 통해 WCF

<system.serviceModel> 
 
    <bindings> 
 
     <wsHttpBinding> 
 
     <binding name="wsSecureBinding"> 
 
      <security mode="TransportWithMessageCredential"> 
 
      <message clientCredentialType="UserName" /> 
 
      </security> 
 
     </binding> 
 
     </wsHttpBinding> 
 
    </bindings> 
 
    <services> 
 
     <service behaviorConfiguration="defaultProfile" name="GS1.CSSM.XMLGenerate.WebService.Implementation.XMLGenerateService"> 
 
     <endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsSecureBinding" name="wsSecureService" contract="GS1.CSSM.XMLGenerate.WebService.Interface.IXMLGenerateService">   
 
     </endpoint> 
 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
 
     </service> 
 
    </services> 
 
    <behaviors> 
 
     <serviceBehaviors> 
 
     <behavior name="defaultProfile"> 
 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/> 
 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
 
      <serviceCredentials> 
 
      <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="GS1.CSSM.XMLGenerate.WebService.ServiceAuthenticator, GS1.CSSM.XMLGenerate.WebService"/> 
 
      </serviceCredentials> 
 
     </behavior> 
 
     <behavior name="noAuthentication"> 
 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/> 
 
      <serviceDebug includeExceptionDetailInFaults="false"/>   
 
     </behavior> 
 
     </serviceBehaviors> 
 
    </behaviors> 
 
    <!--<protocolMapping> 
 
     <add binding="basicHttpsBinding" scheme="https" /> 
 
    </protocolMapping>-->  
 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
 
    </system.serviceModel>

이 컨테이너 설정입니다 :

나는 웹 서비스 구성 아래와 같이이

 
var container = new WindsorContainer(); 

container.AddFacility() 
       .Register(
        Component.For<IXMLGenerateService>() 
         .ImplementedBy<XMLGenerateServiceClient>() 
         .AsWcfClient(
          new DefaultClientModel 
          { 
           Endpoint = 
            WcfEndpoint.FromConfiguration("wsSecureService") 
          }.Credentials(new UserNameCredentials("zul", "password")))); 

그리고 이것은 클라이언트 설정 파일입니다

3,763,739,는이 오류 "추가 정보를 가지고 : 사용자 이름이 제공되지 않습니다. ClientCredentials에 이름을 지정합니다. "나는 서비스에서 메소드를 호출하려고하면. 어떤 아이디어?

답변

0

을 나 자신에 의해 그것을 대답한다 :

을 여기 내가 그 문제를 해결하는 방법입니다

container.Kernel.AddFacility<WcfFacility>() 
      .Register(Component.For<IXMLGenerateService>() 
      .AsWcfClient(new DefaultClientModel 
      { 
       Endpoint = WcfEndpoint.FromConfiguration("wsSecureService") 
      }.Credentials(new UserNameCredentials("zul", "password")))); 

     _smXMLGenerateService = container.Resolve<IXMLGenerateService>(); 

잘하면, 같은 문제가있는 사람을 도울 수 있습니다.

관련 문제