WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”

 

原创地址:http://www.cnblogs.com/jfzhu/p/4071342.html                                                                                        

转载请注明出处

 

如何在WCF中使用Transport Security Mode,以及如何创建证书,请参见《WCF basicHttpBinding之Transport Security Mode, clientCredentialType="None"》,本文介绍如何使用Basic clientCredentialType。

 

server web.config

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
      <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
      <bindings> 
        <wsHttpBinding> 
          <binding name="wsHttpBindingConfig"> 
            <security mode="Transport"> 
              <transport clientCredentialType="Basic" /> 
            </security> 
          </binding> 
        </wsHttpBinding> 
      </bindings> 
      <services> 
        <service name="WCFDemo.DemoService" behaviorConfiguration="CustomBehavior"> 
          <endpoint address="DemoService" binding="wsHttpBinding" contract="WCFDemo.IDemoService" bindingConfiguration="wsHttpBindingConfig" />          
          <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint> 
        </service> 
      </services> 
        <behaviors> 
            <serviceBehaviors> 
                <behavior name="CustomBehavior"> 
                    <serviceMetadata httpsGetEnabled="true" /> 
                    <serviceDebug includeExceptionDetailInFaults="false" />                    
                </behavior> 
            </serviceBehaviors> 
        </behaviors> 
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
</configuration>


 

 

client app.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
        <bindings> 
            <wsHttpBinding> 
                <binding name="WSHttpBinding_IDemoService"> 
                    <security mode="Transport"> 
                        <transport clientCredentialType="Basic" /> 
                    </security> 
                </binding> 
            </wsHttpBinding> 
        </bindings> 
        <client> 
            <endpoint address="https://win-ounm08eqe64.henry.huang/DemoService.svc/DemoService" 
                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IDemoService" 
                contract="DemoServiceReference.IDemoService" name="WSHttpBinding_IDemoService" /> 
        </client> 
    </system.serviceModel> 
</configuration>
public partial class Form1 : Form 
{ 
    DemoServiceReference.DemoServiceClient demoServiceClient;

    public Form1() 
    { 
        InitializeComponent(); 
        demoServiceClient = new DemoServiceReference.DemoServiceClient(); 
        demoServiceClient.ClientCredentials.UserName.UserName = "alex"; 
        demoServiceClient.ClientCredentials.UserName.Password = "123456"; 
    }

    private void buttonCalculate_Click(object sender, EventArgs e) 
    { 
        try 
        { 
            textBoxResult.Text = demoServiceClient.Divide(Convert.ToInt32(textBoxNumerator.Text), Convert.ToInt32(textBoxDenominator.Text)).ToString(); 
        } 
        catch (FaultException<DemoServiceReference.DivideByZeroFault> fault) 
        { 
            MessageBox.Show(fault.Detail.Error + " - " + fault.Detail.Detail); 
        } 
    } 
}

 

调用成功。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。