Nyelv

OperationBehaviorAttribute.ReleaseInstanceMode Tulajdonság

Definíció

Lekéri vagy beállítja azt az értéket, amely azt jelzi, hogy egy művelethívás során a szolgáltatásobjektum újrahasznosítása mikor történik.

public:
 property System::ServiceModel::ReleaseInstanceMode ReleaseInstanceMode { System::ServiceModel::ReleaseInstanceMode get(); void set(System::ServiceModel::ReleaseInstanceMode value); };
public System.ServiceModel.ReleaseInstanceMode ReleaseInstanceMode { get; set; }
member this.ReleaseInstanceMode : System.ServiceModel.ReleaseInstanceMode with get, set
Public Property ReleaseInstanceMode As ReleaseInstanceMode

Tulajdonság értéke

Az egyik ReleaseInstanceMode érték. Az alapértelmezett érték a None.

Kivételek

Az érték nem tartozik az ReleaseInstanceMode értékek közé.

Példák

Az alábbi példakód a szolgáltatásobjektumok hívás előtti és utáni újrahasznosítását ReleaseInstanceMode mutatja be.

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);
  }
  [OperationBehavior(
          ReleaseInstanceMode=ReleaseInstanceMode.BeforeAndAfterCall
  )]
  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;
  }

  ~SampleService()
  {
    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

Megjegyzések

A ReleaseInstanceMode tulajdonság használatával megadhatja, hogy Windows kommunikációs alaprendszer (WCF) mikor hasznosít újra egy szolgáltatásobjektumot a metódus végrehajtása során. Az alapértelmezett viselkedés egy szolgáltatásobjektum újrafeldolgozása az InstanceContextMode érték alapján. Az alapértelmezett viselkedést módosító ReleaseInstanceMode tulajdonság beállítása.

Ez ReleaseInstanceMode nem garantálja a szálkezelést. Ha a szolgáltatás futtatásakor új, nem módosított objektummal kell rendelkeznie, állítsa a tulajdonságot a InstanceContextMode következőre PerCall: .

Tranzakciós forgatókönyvekben a ReleaseInstanceMode tulajdonságot gyakran használják annak biztosítására, hogy a szolgáltatásobjektumhoz társított régi adatok törlődjenek a metódushívás feldolgozása előtt. Azt is ellenőrizheti, hogy a tranzakciókhoz társított szolgáltatásobjektumok újra lesznek-e hasznosítva a tranzakció sikeres befejezése után, ha a tulajdonságot a ReleaseServiceInstanceOnTransactionComplete következőre trueállítja.

A következő viselkedéseket választhatja:

  • A művelet meghívása előtt újrahasznosíthat egy szolgáltatásobjektumot.

  • Szolgáltatásobjektum újrahasznosítása egy művelet meghívása után.

  • A szolgáltatásobjektumok újrahasznosítása a művelet meghívása előtt és után is.

  • Nincs újrahasznosítási viselkedés.

A visszahívási szerződés műveletét kétoldalas ügyfélalkalmazásban is OperationBehaviorAttribute konfigurálhatja. Visszahívási művelet esetén a ReleaseInstanceMode tulajdonságnak kell lennie None , vagy InvalidOperationException futásidőben kivételt kell eredményeznie.

Emellett fontos felismerni, hogy ha a szolgáltatás egy szolgáltatásobjektum konstruktornak ServiceHost.ServiceHost(Object, Uri[]) való átadásával jön létre, a tulajdonság értéke úgy lesz kezelve, mintha az lenne None.

A következőre érvényes: