第一次WCF部署成功心得(UP+证书)

 

代码


<? xml version="1.0" encoding="utf-8"  ?>
< configuration >
  
< system.web >
    
< compilation  debug ="true"   />
  
</ system.web >
  
<!--  部署服务库项目时,必须将配置文件的内容添加到 
  主机的 app.config 文件中。System.Configuration 不支持库的配置文件。
-->
  
< system.serviceModel >
    
< bindings >
      
< wsHttpBinding >
        
< binding  name ="myBinding" >
          
< security  mode ="Message" >
            
< message  clientCredentialType ="UserName"   />
          
</ security >
        
</ binding >
      
</ wsHttpBinding >
    
</ bindings >
    
< services >
      
< service  behaviorConfiguration ="AthleticService.Service1Behavior"
               name
=" AthleticService . MathOperation" >
        
< endpoint  address =""
                  binding
="wsHttpBinding"
                  contract
="AthleticService.IMathOperation"
                  
bindingConfiguration ="myBinding" ></ endpoint >
        
< endpoint  address ="mex"
                  binding
="mexHttpBinding"
                  contract
="IMetadataExchange"   />
        
< host >
          
< baseAddresses >
            
< add  baseAddress ="http://192.168.100.147:7878/AthleticService.MathOperation.svc"   />
          
</ baseAddresses >
        
</ host >
      
</ service >
    
</ services >
    
< behaviors >
      
< serviceBehaviors >
        
< behavior  name ="AthleticService.Service1Behavior" >
          
<!--  为避免泄漏元数据信息,
          请在部署前将以下值设置为 false 并删除上面的元数据终结点  
-->
          
< serviceMetadata  httpGetEnabled ="True" />
          
<!--  要接收故障异常详细信息以进行调试, 
          请将下值设置为 true。在部署前 
            设置为 false 以避免泄漏异常信息
-->
          
< serviceDebug  includeExceptionDetailInFaults ="False"   />

          
< serviceCredentials >
            
< clientCertificate >
              
< authentication  certificateValidationMode ="None"   />
            
</ clientCertificate >
            
< serviceCertificate  findValue ="AthleticTestCer"
                                storeLocation ="LocalMachine"
                                storeName ="My"
                                x509FindType ="FindBySubjectName"   />
            
< userNameAuthentication  userNamePasswordValidationMode ="Custom"
                                    customUserNamePasswordValidatorType ="AthleticService.MyCustomValidator,AthleticService"   />
          
</ serviceCredentials >
        
</ behavior >
      
</ serviceBehaviors >
    
</ behaviors >
  
</ system.serviceModel >
</ configuration >


 

 

 

代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Runtime.Serialization;
using  System.ServiceModel;
using  System.Text;
using  System.IdentityModel.Selectors;
using  System.IdentityModel.Tokens;

namespace  AthleticService
{

    
public   class  MathOperation : IMathOperation
    {

        
#region  IMathOperation 成员

        
public   int  Add( int  x,  int  y)
        {
            
return  x  +  y;
        }

        
#endregion
    }

    
public   class  MyCustomValidator : UserNamePasswordValidator
    {
        
public   override   void  Validate( string  userName,  string  password)
        {
            
if  ( string .IsNullOrEmpty(userName))
                
throw   new  ArgumentNullException( " userName " );

            
if  ( string .IsNullOrEmpty(password))
                
throw   new  ArgumentNullException( " password " );

            
if  (userName  !=   " admin "   ||  password  !=   " 123456 " )
                
throw   new  SecurityTokenException( " 用户名或者密码错误! " );
        }
    }
}

你可能感兴趣的:(WCF)