لماذا يتم استدعاء مُنشئ خدمة الويب الخاصة بي في كل مرة أتصل فيها بـ WebMethod؟

StackOverflow https://stackoverflow.com/questions/830207

سؤال

يتم استدعاء مُنشئ خدمة الويب الخاصة بي في كل مرة أتصل فيها بـ WebMethod. هذا يسبب بعض المشكلات في بعض الوظائف الجديدة التي أضيفها ولا يمكنني معرفة ما أفعله خطأ للتسبب في ذلك. المكان الوحيد الذي أحدد فيه لخدمة الويب موجودة في global.asax.cs Application_Start ، ولكن إذا قمت بإزالة الرمز إلى new خدمة الويب ، لا تزال تستدعي المُنشئ في كل مرة أسميها WebMethod.

لقد اختبرت ذلك من خلال التصفح إلى ملف .asmx والاتصال بـ WebMethod على هذا النحو ، وقد قمت أيضًا بإنشاء تطبيق وحدة تحكم اختبار لديه إشارة إلى خدمة الويب وسوف أسمي الأساليب بهذه الطريقة. كلاهما يعطي نفس النتائج.

أنا أستخدم C# في ASP.NET 1.1. أيه أفكار؟

يحرر:
أحاول إنشاء خيط نبضات القلب يقوم باستطلاع خدمة Windows. أحاول حفظ النتيجة في جدول التجزئة (ترابط متعددة تقوم باستطلاع خدمات متعددة). لقد غيرت webmethod (كما كانت تستخدم لاستطلاع خدمة Windows) للحصول على النتائج من علامة التجزئة. نحن نحاول زيادة سرعة مكالمة WebMethod هذه.

هل كانت مفيدة؟

المحلول

عندما تتصل طريقة ويب ، يتم إنشاء مثيل جديد لخدمة الويب - هذا هو السلوك المقصود. خدمات الويب عديمة الجنسية ، مما يعني أن مثيل الخدمة لا يتم الاحتفاظ به على قيد الحياة بين مكالمات طريقة الويب ، وبالتالي لا يمكنك تخزين أي حالة في الأعضاء (الحقول ، الخصائص) لخدمة الويب.

إذا كنت ترغب في حفظ بعض القيم/الحالة بين مكالمات طريقة الويب ، فيجب عليك استخدام جلسة ASP.NET أو قاعدة بيانات لهذا الغرض.

انظر هذا السؤال للحصول على التفاصيل: هل هذا من المفترض أن يعمل بهذه الطريقة؟

نصائح أخرى

خطأ ... هذا نوع من التصميم أخشى. هل يمكنك وصف المشكلات التي تواجهها وما تحاول تحقيقه ، وأعتقد أنك بحاجة إلى إعادة تصميم تصميمك قليلاً هنا.

يمكنك أيضًا التبديل إلى WCF الذي يدعم الخدمات الحكومية

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top