خطأ "ملف غامض غير موجود" (في الكود غير ذي صلة بأي نوع من الملفات IO) في Global.asax
-
30-09-2019 - |
سؤال
أحصل على خطأ "ملف غير موجود". في تطبيق ASP.NET الخاص بي. هذا غريب ، رغم ذلك.
أولاً ، لا يوجد ملف IO في أي مكان - لا أفعل أي شيء مع أي ملفات عند حدوثه.
أيضًا ، يحدث ذلك في آخر دعامة مجعد للختام لطريقة application_error () في Global.asax (هذا هو الذي تضعه في الكود للتعامل مع الاستثناءات غير المعلنة). هذا صحيح: لا يحدث في بيان رمي ، أو أي سطر من الكود ذي معنى ، ولكن الحق في آخر دعامة مجعد.
الهدف هو:
{system.io.fileinfo getFileInfo (System.String ، System.String ، System.Web.httpresponse)}
الذي يبدو لي وكأنه شيء داخلي لـ ASP.NET (لا توجد طريقة getFileInfo () في حلي).
stacktrace فقط:
في asp.global_asax.application_error (مرسل الكائن ، eventargs e) في c: subversion confapp website global.asax: السطر 36 في system.eventHandler.invoke ()
التي لا يمكنني استنباط أي أدلة.
تفاصيل أخرى:
أنا في منتصف محاولة حل النزاعات بين JQuery 1.4 (و jQuery UI) و MS ASP.NET AJAX 4 في هذا التطبيق في الوقت الحالي
لقد بدأت بعد ترقية التطبيق من .NET 2.0 إلى .NET 4 و Visual Studio 2010.
أي فكرة كيف يمكنني أن أبدأ في النظر في هذا؟
تحديث:
بعد فترة وجيزة من نشر هذا ، قمت بإزالة وإعادة إضافة jQuery UI (بما في ذلك .js ، .css والصور). حتى الآن ، يبدو أن هذا قد إصلاحه. لست متأكدًا من كيفية تسبب مكتبة JS من جانب العميل إلى خطأ في Global.asax. سيضيف هذا كإجابة ، على الرغم من ذلك ، إذا لم يظهر الخطأ مرة أخرى قريبًا ...
المحلول 2
بعد يوم ، ويبدو أن المشكلة قد اختفت.
لقد قمت بإزالة وإعادة إضافة jQuery UI (بما في ذلك .js ، .css والصور). حتى الآن ، يبدو أن هذا قد إصلاحه. غريب جدا.
نصائح أخرى
ضمن طريقة Applicationerror ، تحقق من request.currentExecutionFilePath. يجب أن يشير CurrentExecutionFilePath إلى الملف المطلوب.
ساعدني التحقق من هذه الخاصية في تحديد أن Chrome يطلب تلقائيًا "/favicon.ico." إذا لم يكن هناك Favicon ، فستحصل على "ملف غير موجود" ، حتى يعتقد أن الصفحة يتم تحميلها على ما يرام. راجع للشغل ، أي و FF لا تتصرف بهذه الطريقة.
باستخدام اقتراح بيري لفحص Request.CurrentExecutionFilePath
في Application_Error
, ، وجدت أن تطبيق ASP.NET الخاص بي لم يتمكن من العثور على ملفات jQuery في المجلدات المسبقة مع "~/"
في ال <script>
بطاقة شعار.
كنت أفعل هذا في علامة Masterpage الخاصة بي:
<script src="~/Scripts/jquery-1.4.1.js" type="text/javascript">
عندما كان يجب أن أفعل هذا:
<script src="Scripts/jquery-1.4.1.js" type="text/javascript">