【转载】第一次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("用户名或者密码错误!");
        }
    }
}
posted @ 2011-12-06 17:07  火腿骑士  阅读(197)  评论(0编辑  收藏  举报