代码
<? 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 >
<? 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( " 用户名或者密码错误! " );
}
}
}
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( " 用户名或者密码错误! " );
}
}
}