默认服务行为

默认示例演示如何配置服务行为设置。 此示例基于名为Getting Started的指南,并实现ICalculator服务协定。 此示例使用ServiceBehaviorAttributeOperationBehaviorAttribute属性显式定义服务行为和操作行为。 可以在配置文件中配置行为,或在代码中强制配置行为(如此示例所示)。

在此示例中,客户端是一个控制台应用程序 (.exe),服务是由 Internet 信息服务 (IIS) 承载的。

注释

本示例的设置过程和生成说明位于本主题末尾。

服务类使用 ServiceBehaviorAttributeOperationBehaviorAttribute 指定以下代码示例中所示的行为。 指定的所有值都是默认值。

[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.

设置、生成和运行示例

  1. 确保已为 Windows Communication Foundation 示例 执行One-Time 安装过程。

  2. 若要生成解决方案的 C# 或 Visual Basic .NET 版本,请按照 生成 Windows Communication Foundation 示例中的说明进行操作。

  3. 若要在单台计算机或跨计算机配置中运行示例,请按照 运行 Windows Communication Foundation 示例中的说明进行操作。