سؤال

أواجه مشكلة في تكوين خدمة 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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top