سؤال

لدي تطبيق مؤسسي داخلي يستهلك حاليًا 10 خدمات ويب مختلفة.يتم استهلاكها عبر "مراجع الويب" ذات النمط القديم بدلاً من استخدام WCF.

المشكلة التي أواجهها هي محاولة العمل مع الفرق الأخرى في الشركة التي تقوم بتأليف الخدمات التي أستهلكها.لقد وجدت أنني بحاجة لالتقاط رسائل SOAP الدقيقة التي أرسلها وأستقبلها.لقد قمت بذلك عن طريق إنشاء سمة جديدة تمتد إلى SoapExtensionAttribute.ثم أقوم فقط بإضافة هذه السمة إلى طريقة الخدمة في ملف Reference.cs الذي تم إنشاؤه.هذا ينجح، لكنه مؤلم لسببين.أولاً، إنه ملف تم إنشاؤه لذا يمكن الكتابة فوق أي شيء أفعله هناك.ثانيًا، يجب أن أتذكر إزالة السمة قبل إيداع الملف.

هل هناك طريقة أفضل لالتقاط رسائل SOAP الدقيقة التي أرسلها وأستقبلها؟

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

المحلول

يبدو أن هذا سؤال شائع، حيث أنني طرحته للتو وطُلب مني أن أبحث عنه هنا.

ليس عليك تعديل الملف الذي تم إنشاؤه Reference.cs.يمكنك الرجوع إلى الامتداد في ملف التطبيق الخاص بك app.config.

نصائح أخرى

هل هذا تطبيق ويب؟

ضع رمز SoapExtension الخاص بك في HTTPModule، ثم أدخل مغلف SOAP في دفق HTTPOutput.

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

لقد قمت بالفعل بإنشاء HTTPModule للقيام بذلك، وسوف أقوم بتجريد المعلومات الخاصة بشركتي ونشر الأشياء الجيدة في وقت لاحق اليوم.

تحقق أيضًا من SoapUI، فهي أداة سهلة الاستخدام.

يمكنك القيام بذلك عن طريق إنشاء SoapExtention.يفحص هذا المقال.

لقد استخدمت الكود التالي كمثال لكيفية التقاط طلبات SOAP في تطبيق مكتوب منذ فترة.

<System.Diagnostics.Conditional("DEBUG")> _
    Private Sub CheckHTTPRequest(ByVal functionName As String)
        Dim e As New UTF8Encoding()

        Dim bytes As Long = Me.Context.Request.InputStream.Length
        Dim stream(bytes) As Byte
        Me.Context.Request.InputStream.Seek(0, IO.SeekOrigin.Begin)
        Me.Context.Request.InputStream.Read(stream, 0, CInt(bytes))

        Dim thishttpRequest As String = e.GetString(stream)

        My.Computer.FileSystem.WriteAllText("D:\SoapRequests\" & functionName & ".xml", thishttpRequest, False)

    End Sub

تعيين السمة الشرطية كما فعلت يجعل المترجم يتجاهل استدعاء الطريقة لجميع أنواع البناء بخلاف التصحيح.

آسف لVB، فإنه فرض علي.

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