سؤال

لديّ تطبيق ويب أستضيفه ، ويقوم عميل لي بالإبلاغ عن أن بعض مكتبات Telerik JavaScript المدرجة في الموقع (ولكن ليس كلها) لا تعمل بشكل صحيح.

ما تمكنت من تشخيصه حتى الآن هو أنه في مرحلة ما في هذه العملية ، يتم حظر موارد webresource.axd التي تحتوي على رمز Telerik JavaScript. إن مطالبة العميل بالتنقل مباشرة إلى ملف AXD نفسه مع نفس QueryString هو العائد على رسالة خطأ "اتصال الخادم" في Internet Explorer.

حاول العميل تنزيل هذا الملف من عدة آلات في موقعه ، بالإضافة إلى جهاز خارج جدار الحماية وشبكته ، وجهاز يعمل في منزلهم ، ويحصل على نفس الخطأ في كل مرة. لقد حاولوا استخدام كل من Internet Explorer و Firefox.

ومع ذلك ، أتمكن من تنزيل نفس الملف بنجاح داخل شبكة الاستضافة الخاصة بنا ، خارجها ، ومن اتصال منزلي.

وفقًا لسجلات IIS ، أسفرت جميع المحاولات المسجلة لتنزيل المورد عن نتيجة 200 HTTP OK.

أشياء أخرى تمت محاولتها:

  • رابط إلى 404.AXD غير موجود (أعطى رسالة خطأ صفراء ASP.NET 404 كما هو متوقع)
  • رابط لـ webresource.axd ، ولكن مع وجود QueryString غير صالح يشير إلى مورد غير موجود (أعطى asp.net أصفر غير صالح أو سلسلة قاعدة غير صالحة ، كما هو متوقع)
  • رابط لنفس Webresource.axd ، ولكن عبر رأس مضيف مختلف (نفس رسالة خطأ "إعادة الاتصال").

أنا الآن في حيرة لما يمكن أن يكون المشكلة في هذه المرحلة. يستضيف خادم الاستضافة لدينا عشرات من تطبيقات ASP.NET المختلفة (بما في ذلك عدة حالات من الحالات المعنية) لسنوات ، وهذه هي الشكوى الأولى التي رأيتها فيما يتعلق بهذا.

أنا متأكد بنسبة 99 ٪ من أن المشكلة هي شيء في نهاية العميل من خلال تكوين جدار الحماية غير لائق أو تكوين محتوى جهاز التوجيه ، لكن هذا لا يفسر سبب رؤية العميل نفس المشكلات خارج جدار الحماية وفي المنزل.

أي أفكار حول ما يمكن أن يحدث خطأ أو حتى ما هي الأسئلة الأخرى التي يجب طرحها؟ هل رأى أي شخص أي شيء حتى عن بعد مثل هذا؟

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

المحلول 2

لم تعرف أبدًا ما هي المشكلة ، ولكن يبدو أن تحديث Radcontrols إلى أحدث (Q1'09 النهائي) يحل المشكلة.

نصائح أخرى

إذا كان هذا يحدث مع RadControls الكلاسيكية لـ ASP.NET ، فحاول إعداد useembeddedscripts = "false" لعناصر التحكم في الصفحة. هذا سيجعلها تخدم جميع البرامج النصية من مجلد Radcontrols (ملفات .js المادية) بدلاً من استخدام الموارد المدمجة (webresource.axd). بطبيعة الحال ، عليك التأكد من أن لديك ملفات البرنامج النصي في مجلد RadControls الخاص بك.

إذا كان هذا يحدث مع RadControls لـ ASP.NET AJAX ، فسيتم تنزيل البرامج النصية عناصر التحكم باستخدام Script Manager (Scriptresource.axd وليس webresource.axd). في أي حال ، يمكنك محاولة استخدام Telerik RadscriptManager بدلاً من ASP.NET ScriptManager -سيجمع هذا وضغط جميع البرامج النصية في طلب واحد.

أخيرًا ، يمكنك أن تطلب من عميلك تنزيل وتثبيت Fiddler لـ IE أو Firebug لـ Firefox والتحقق من ما يحدث بالضبط مع الطلبات التي تفشل (على سبيل المثال استجابة الخادم ، ما هو في هيئة الاستجابة ، إلخ).

للقضاء WebResource.axd و ScriptResource.axd من الصفحة ، تحتاج إلى

  • افتح ASSMBLY ذات الصلة باستخدام العاكس أو ILSPY ثم حفظ ملفات JS المدمجة من قسم الموارد.
  • أضفها الآن كمراجع البرنامج النصي باستخدام ASP: ScriptManager

في وقت لاحق سيتم تقديم هذه التعريفات على النحو التالي:

<script src="staticJS1.js" type="text/javascript"></script> 
<script src="staticJS2.js" type="text/javascript"></script> 

ولن يتم حظرها بعد الآن.

<asp:ScriptManager ID="Scriptmanager1" runat="server">
        <Scripts>
            <asp:ScriptReference Name="MicrosoftAjaxWebForms.js" Assembly="System.Web.Extensions"
                Path="~/staticJS1.js" />
            <asp:ScriptReference Name="MicrosoftAjax.js" Assembly="System.Web.Extensions" Path="~/staticJS2.js" />
        </Scripts>
</asp:ScriptManager>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top