مشكلة في تكوين WCF لاستخدام الجلسة
-
27-09-2019 - |
سؤال
أواجه مشكلة في تكوين خدمة WCF لتشغيله في وضع الجلسة. كاختبار كتبت هذه الخدمة البسيطة:
[ServiceContract]
public interface IService1
{
[OperationContract]
string AddData(int value);
}
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
internal class Service1 : IService1,IDisposable
{
private int acc;
public Service1()
{
acc = 0;
}
public string AddData(int value)
{
acc += value;
return string.Format("Accumulator value: {0}", acc);
}
#region IDisposable Members
public void Dispose()
{
}
#endregion
}
أنا أستخدم ربط Net.tcp مع التكوين الافتراضي مع تمكين علامة جلسة موثوقة. بقدر ما أفهم ، يجب أن تعمل هذه الخدمة مع عدم وجود مشاكل في وضع الجلسة. ولكن ، يتم تشغيل الخدمة كما في وضع المكالمة - في كل مرة أتصل فيها AddData ، يتم استدعاء مُنشئ قبل تنفيذ AddData ويتم استدعاء Dispose () بعد المكالمة. أي أفكار لماذا هذا يمكن أن يحدث؟ ربما أفتقد شيئًا؟
ملاحظة: لا أعرف ما إذا كان مرتبطًا ، لكنني أستخدم VS2008 لتشغيل هذا.
تحديث: لقد لاحظت هنا لا تحافظ WCFTESTCLIENT على جلسة مع العملاء - ربما كانت مشكلتي. في الواقع كانت هذه هي المشكلة. أكد الاتصال بالخدمة من عميل وحدة التحكم البسيطة أن الخدمة تعمل كما ينبغي.
المحلول
حاول مطالبة SessionMode عند تعريف ServiceContract:
[ServiceContract(SessionMode = SessionMode.Required)]
public interface IService1
{
[OperationContract]
string AddData(int value);
}