Per-Session یکی دیگر از انواع Instance Management در WCF است. در این روش به ازای هر کلاینت (پراکسی) یک instance از آبجکت سرویس ایجاد میشود. Per-Session به عنوان یک روش statefull معادل روش برنامهنویسی Client-Serverی کلاسیک است. که در آن را کلاینت به سرور وصل شده و شروع به ارسال درخواستهایش میکند بدون آن که سرور بخواهد به ازای هر یک از درخواستها یک session جدید ایجاد کند.
از Per-Session نمیتوان روی همه پروتکلها (Bindingها) استفاده کرد. مثلاً استفاده از آن با BasicHttpBinding که همان وب سرویس معمولی است امکان پذیر نیست. دلیل آن هم ماهیت stateless بودن پروتکل HTTP است. در روش Per-Session هم سرور و هم کلاینت میتوانند به SessionId دسترسی پیدا کرده و از آن استفاده نمایند.
[ServiceContract(SessionMode = SessionMode.Allowed)]
interface IMyContract
{…}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
class MyService : IMyContract
{…}
interface IMyContract
{…}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
class MyService : IMyContract
{…}