ReleaseInstanceMode 枚举


指定系统在操作调用进程中回收服务对象的时间。Specifies when the system recycles the service object in the operation invocation process.

public enum class ReleaseInstanceMode
public enum ReleaseInstanceMode
type ReleaseInstanceMode = 
Public Enum ReleaseInstanceMode


AfterCall 2

在完成操作后回收对象。Recycles the object subsequent to the completion of the operation.

BeforeAndAfterCall 3

在调用操作前和完成操作后回收对象。Recycles the object prior to calling the operation and subsequent to the completion of the operation.

BeforeCall 1

在调用操作前回收对象。Recycles the object prior to calling the operation.

None 0

根据 InstanceContextMode 值回收对象。Recycles the object according to the InstanceContextMode value.


下面的代码示例演示如何使用 ReleaseInstanceMode 在调用之前和之后均回收服务对象。The following example code shows the use of ReleaseInstanceMode to recycle service objects both before and after a call.

class SampleService : ISampleService
  private Guid id;
  private string session;

  public SampleService()
    id = Guid.NewGuid();
    session = OperationContext.Current.SessionId;
    Console.WriteLine("Object {0} has been created.", id);
    Console.WriteLine("For session {0}", session);
  public string  SampleMethod(string msg)
    Console.WriteLine("The caller said: \"{0}\"", msg);
    Console.WriteLine("For session {0}", OperationContext.Current.SessionId);
    return "The service greets you: " + msg;

    Console.WriteLine("Object {0} has been destroyed.", id);
    Console.WriteLine("For session {0}", session);
Friend Class SampleService
    Implements ISampleService
  Private id As Guid
  Private session As String

  Public Sub New()
    id = Guid.NewGuid()
    session = OperationContext.Current.SessionId
    Console.WriteLine("Object {0} has been created.", id)
    Console.WriteLine("For session {0}", session)
  End Sub
  <OperationBehavior(ReleaseInstanceMode:=ReleaseInstanceMode.BeforeAndAfterCall)> _
  Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
    Console.WriteLine("The caller said: ""{0}""", msg)
    Console.WriteLine("For session {0}", OperationContext.Current.SessionId)
    Return "The service greets you: " & msg
  End Function

  Protected Overrides Sub Finalize()
    Console.WriteLine("Object {0} has been destroyed.", id)
    Console.WriteLine("For session {0}", session)
  End Sub
End Class


ReleaseInstanceMode 使用ReleaseInstanceMode带有属性的来通知 Windows Communication Foundation (WCF) 必须在调用过程中的特定点回收当前服务对象。Use the ReleaseInstanceMode with the ReleaseInstanceMode property to inform Windows Communication Foundation (WCF) that the current service object must be recycled at a particular point in the invocation process. 默认行为是根据 InstanceContextMode 值来回收服务对象。The default behavior is to recycle a service object according to the InstanceContextMode value.