默认示例演示如何配置服务行为设置。 此示例基于名为Getting Started的指南,并实现ICalculator
服务协定。 此示例使用ServiceBehaviorAttribute和OperationBehaviorAttribute属性显式定义服务行为和操作行为。 可以在配置文件中配置行为,或在代码中强制配置行为(如此示例所示)。
在此示例中,客户端是一个控制台应用程序 (.exe),服务是由 Internet 信息服务 (IIS) 承载的。
注释
本示例的设置过程和生成说明位于本主题末尾。
服务类使用 ServiceBehaviorAttribute 和 OperationBehaviorAttribute 指定以下代码示例中所示的行为。 指定的所有值都是默认值。
[ServiceBehavior(
AutomaticSessionShutdown=true,
ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerSession,
IncludeExceptionDetailInFaults=false,
UseSynchronizationContext=true,
ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
[OperationBehavior(
TransactionAutoComplete=true,
TransactionScopeRequired=false,
Impersonation=ImpersonationOption.NotAllowed)]
public double Add(double n1, double n2)
{
System.Threading.Thread.Sleep(1600);
return n1 + n2;
}
...
}
服务行为是通过 ServiceBehaviorAttribute 特性来指定的。 下表描述了其中一些行为。
服务行为 | DESCRIPTION |
---|---|
AutomaticSessionShutdown | 在客户端的请求中自动关闭会话。 |
ConcurrencyMode | 为每个服务实例指定并发模式。 |
InstanceContextMode | 指定实例上下文模式。 |
UseSynchronizationContext | 确定是否使用提供的同步上下文(如果已设置)。 如果您想控制是否在 Windows 窗体应用程序中使用 WindowsFormsSynchronizationContext ,请使用此功能。 |
IncludeExceptionDetailInFaults | 确定是否将常规未经处理的执行异常转换为 Fault<string> 错误消息并将其作为错误消息发送。 |
TransactionIsolationLevel | 指定事务的隔离级别。 |
ValidateMustUnderstand | 确定意外消息头是否会导致错误。 |
操作行为是使用 OperationBehaviorAttribute 属性指定的。 下表描述了其中一些行为。
操作行为 | DESCRIPTION |
---|---|
TransactionAutoComplete | 确定服务操作的完成是否提交当前事务。 |
TransactionScopeRequired | 确定服务操作是否在客户端流动的事务中登记。 |
Impersonation | 确定服务操作是否模拟调用者的身份。 |
ReleaseInstanceMode | 确定是否在服务操作调用的开头或结尾处回收服务实例。 |
运行示例时,操作请求和响应将显示在客户端控制台窗口中。 调用之间的延迟是在服务操作中对 System.Threading.Thread.Sleep()
进行调用的结果。 其余行为示例更详细地解释了这些行为。 在客户端窗口中按 Enter 关闭客户端。
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
设置、生成和运行示例
确保已为 Windows Communication Foundation 示例 执行One-Time 安装过程。
若要生成解决方案的 C# 或 Visual Basic .NET 版本,请按照 生成 Windows Communication Foundation 示例中的说明进行操作。
若要在单台计算机或跨计算机配置中运行示例,请按照 运行 Windows Communication Foundation 示例中的说明进行操作。