سؤال

وهذا يقود الفريق بأكمله إلى الجنون.يجب أن يكون هناك جزء بسيط تم تكوينه بشكل خاطئ من IIS أو خادم الويب الخاص بنا، ولكن في كل مرة نحاول تشغيل تطبيق ويب ASP.NET على IIS 7.5 نحصل على الخطأ التالي...

إليك الخطأ بالكامل:

HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration  
data for the page is invalid.

`Detailed Error Information` 
Module              IIS Web Core
Notification        Unknown
Handler             Not yet determined
Error Code          0x8007000d
Config Error
Config File         \\?\E:\wwwroot\web.config
Requested URL       http://localhost:80/Default.aspx
Physical Path 
Logon Method        Not yet determined
Logon User          Not yet determined
Config Source
   -1: 
    0: 

الآلة قيد التشغيل ويندوز سيرفر 2008 R2.نحن نعمل على تطوير تطبيق الويب الخاص بنا باستخدام فيجوال ستوديو 2008.

وفقًا لمايكروسوفت، يعني الرمز 8007000d أن هناك خطأ في بناء الجملة في web.config الخاص بنا - باستثناء إنشاء المشروع وتشغيله بشكل جيد محليًا.إن النظر إلى web.config في XML Notepad لا يظهر أي أخطاء في بناء الجملة أيضًا.أفترض أنه يجب أن يكون نوعًا من التكوين السيئ من جهتي ...؟

هل يعرف أحد أين يمكنني العثور على مزيد من المعلومات حول الخطأ؟لا يظهر أي شيء في EventViewer أيضًا :(

لست متأكدًا مما قد يكون من المفيد ذكره أيضًا ...

المساعدة موضع تقدير كبير.شكرًا!

التحديثات!- تم نشر WEB.CONFIG أدناه

حسنًا، منذ أن قمت بنشر السؤال الأصلي أعلاه، فقد قمت بتتبع الخطوط الدقيقة في web.config التي كانت تسبب الخطأ.

هنا هي الخطوط (تظهر بين <System.webServer> العلامات)...

    <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </httpHandlers>

ملحوظة:إذا قمت بحذف السطور بين ال <httpHandlers> مازلت اقع في الخطأ نفسه.لا بد لي من حذف حرفيا <httpHandlers> (والأسطر بينهما) للتوقف عن الحصول على الخطأ أعلاه.

بمجرد أن أفعل هذا أحصل على جديد ومع ذلك، خطأ 500.19.لحسن الحظ، يخبرني IIS هذه المرة بالجزء من web.config الذي يسبب المشكلة...

    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </handlers>

بالنظر إلى هذه السطور، من الواضح أن المشكلة قد انتقلت بشكل أكبر داخل نفس المشكلة <system.webServer> علامة إلى <handlers> بطاقة شعار.

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

لا يمكن للنظام العثور على الملف المحدد.

من الواضح أنني أعتقد أن هذه الأخطاء الجديدة نشأت للتو من حذف ملف <httpHandlers> العلامات في المقام الأول - من الواضح أن التطبيق يحتاجها - لذا يبقى السؤال:لماذا قد تؤدي هذه العلامات إلى حدوث خطأ في IIS في المقام الأول ؟؟؟

هل أحتاج إلى تثبيت شيء ما على IIS حتى يعمل معهم؟

شكرا مرة أخرى على اي مساعدة.

WEB.CONFIG

ها هي الأجزاء المزعجة لدينا web.Config...آمل أن يساعد هذا شخص ما في العثور على مشكلتنا!

<system.Web>

<!-- stuff cut out -->

    <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56" validate="false"/>
    </httpHandlers>
    <httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </httpModules>
</system.web>

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
        <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </modules>
    <remove verb="*" path="*.asmx"/>
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </handlers>
</system.webServer>
هل كانت مفيدة؟

المحلول 3

آها!لقد تغلبت على هذه المشكلة!يا إلهي، لقد كان الأمر وحشًا بالنسبة لشخص مثلي يتمتع بخبرة محدودة في IIS.اعتقدت حقًا أنني سأقضي عطلة نهاية الأسبوع بأكملها في إصلاحها.

هذا هو الحل لأي شخص آخر يواجه هذه المشكلة الشريرة.

أول شيء يجب أن تكون على علم به:إذا كنت تأمل أن يكون هذا هو الحل المناسب لك، فتأكد من أن لديك نفس رمز الخطأ (0x8007000د) ومصدر التكوين (-1: 0:).إذا لم يكن الأمر كذلك، هذا ليس كذلك الحل الخاص بك.

الشيء التالي الذي يجب أن تكون على دراية به: لم يتم تثبيت AJAX بشكل صحيح في web.config الخاص بك!

قم بإصلاح ذلك باتباع هذا الدليل:
http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

ثم قم بتثبيت ملحقات أجاكس 1.0 على خادم الإنتاج الخاص بك، من هذا الرابط:

http://www.asp.net/ajax/downloads/archive/
تحديث: يبدو أن Microsoft قد أزالت الصفحة أعلاه :(

هذا كل شيء!

نصائح أخرى

كانت لدي هذه الأعراض بالضبط وكانت مشكلتي مشابهة لمشكلة بيتر.تم إعداد مشروع موجود على خادم جديد.أشار مشروعي إلى وحدة إعادة كتابة عنوان URL لـ IIS7، ولكن لم يتم تثبيتها بعد على الخادم الجديد.تثبيته حل مشكلتي.

يمكنك استخدام ال مثبت منصة ويب مايكروسوفت لتثبيته.تنفيذه، حدد منتجات, ، في القائمة اليسرى حدد الخادم ويجد إعادة كتابة عنوان URL في القائمة وتثبيته.

أو يمكنك تنزيله هنا.

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

http://forums.iis.net/t/1176834.aspx

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

واجه نفس المشكلة المذكورة أعلاه، نفس رمز الخطأ وما إلى ذلك.إعداد موقع ويب محلي على نظام التشغيل Windows 8.بعد الكثير من البحث، تبين أننا نفتقد إعادة كتابة عنوان URL.بعد تنزيله كان كل شيء على ما يرام.:)

نفس المشكلة على Server 2016، IIS 10، خطأ 500.19.لقد قمت بتثبيت وحدة إعادة التوجيه وعملت.لا أعرف لماذا لم يتم تضمين هذا بشكل افتراضي.

https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads

لكي نكون واضحين، يبدو أن web.config من IIS 7 سيعمل، أو أنه مصمم للعمل، ولكن عدم وجود هذه الوحدة يعطي خطأ غريبًا وغير مفيد حقًا.ينقلك Googling إلى صفحة Microsoft التي تصر على أن موقعك تالف أو أن web.config تالف.ولا يبدو أن الأمر كذلك.

هذه الصفحة غير المفيدة موجودة هنا: https://support.microsoft.com/en-us/kb/942055

لقد قمت فقط بإضافة إجابة لأنني أمضيت ساعات في محاولة حل نفس الأعراض (ولكن مشكلة مختلفة):

السبب المحتمل هو وجود ملف x86 dll في تجمع تطبيقات 64 بت، والحل هو تمكين تطبيقات 32 بت في إعدادات تجمع التطبيقات.

بالنسبة لي، فإن إعادة تسجيل asp.net لـ iis قد نفع.نأمل أن يساعد شخص آخر.

aspnet_regiis.exe -i

للتلخيص بناءً على الإجابات هنا وفي أماكن أخرى:

  1. تحقق من إصدار .NET لمجمع التطبيقات (على سبيل المثال.2.0 مقابل 4.0)
  2. تأكد من تثبيت كافة الوحدات النمطية المشار إليها في IIS.في هذه الحالة كان امتدادات AJAX (ربما ليس هذا هو الحال هذه الأيام)، ولكن إعادة كتابة عنوان URL هو أمر شائع.

هناك طريقة أخرى للحصول على الخطأ 500.19 بدون سبب واضح وهي فقدان الأدلة و/أو الأذونات المعطلة الخاصة بها.

في حالة وجود هذا السؤال، أعتقد أن السؤال يتعلق بإصدار IIS الكامل.أفترض هذا بسبب هذا السطر:

Config File         \\?\E:\wwwroot\web.config

عادةً ما يقوم مثبت IIS بإنشاء ملف wwwroot بالنسبة لك وهذا هو المجلد الجذر الافتراضي لجميع مواقع الويب ونقطة التثبيت للأدلة الافتراضية.إنه موجود دائمًا، لذا لا توجد مشكلة، فأنت عادةً لا تهتم كثيرًا بذلك.

نظرًا لأن ملفات web.config ذات تسلسل هرمي، يمكنك وضع ملف web.config رئيسي هناك والحصول على بعض إعدادات الجذر هناك، وسترثه جميع المواقع.يتحقق IIS من وجود هذا الملف ويحاول تحميله.

لكن الجزء الأول الممتع:

سيكون هذا الدليل موجودًا إذا قمت بتثبيت IIS بشكل صحيح.إذا لم يكن موجودا، سوف تحصل على خطأ من فئة 500.ومع ذلك، إذا كنت تلعب بأذونات الملف/الدليل، وخاصة تلك "المتقدمة"، فيمكنك فعل ذلك عن طريق الخطأ ينكر حساب خدمة IIS من مسح/قراءة محتويات هذا الدليل.إذا كان IIS غير قادر على التحقق من وجود wwwroot\web.config، أو إذا كان موجودًا ولم يتمكن IIS من فتحه وقراءته - bam - خطأ من الفئة 500.

ومع ذلك، بالنسبة لـ IIS الكامل، فمن غير المحتمل جدًا.عادة ما يكون المطورون/المسؤولون الذين يعملون مع IIS الكامل مترددين بشأن اللعب wwwroot لذلك يبقى عادةً مهيأ بشكل صحيح.

ومع ذلك، على IIS Express..

عادة، IIS Express "يعمل فقط".في كثير من الأحيان، لا يدرك المطورون الذين يستخدمون IIS Express مدى تشابهه داخليًا مع IIS الحقيقي.

يمكنك أن تتعثر بسهولة على حقيقة أن IIS Express لديه ملف applicationHost.config الخاص به وأن VS ينشئه ويديره نيابةً عنك (بشكل صحيح، إلى حد ما) وهذا النوع من المفاجآت التي تخبرك أن الأمر ليس بهذه البساطة والنقطة- وانقر كما يبدو في البداية.

وبصرف النظر عن ملف التكوين هذا، يقوم VisualStudio أيضًا بإنشاء بنية دليل فارغة ضمن ملف Documents مجلد.إذا كنت أتذكر بشكل صحيح، يعتبر IIS Express هذه المجلدات الأدلة الجذرية لموقعك (مواقعك) على الويب التي تقوم عليها الدلائل الافتراضية مع التعليمات البرمجية الخاصة بك هي التي شنت.

لاحقًا، تمامًا مثل IIS، عند بدء تشغيل IIS Express، يتم ذلك يتوقع توجد هذه المجلدات ويتحقق من وجود ملفات web.config الجذرية هناك.ال موقع web.config ملفات.دائمًا تقريبًا، تكون ملفات web.config هذه مفقودة - ولا بأس بذلك لأنك لا تريدها - فلديك **تطبيق web.config الخاص بك"، ويتم وضعها مع بقية المحتوى في أدلة افتراضية.

والآن الجزء الثاني الممتع هو:آي آي إس إكسبرس يتوقع أن الدلائل الفارغة.يمكن أن تكون فارغة، لكن يجب أن تكون موجودة.إذا لم تكن موجودة - فسوف تحصل على خطأ من فئة 500 يخبرك بأنه لا يمكن الوصول إلى ملف "web.config" في هذا المسار.

المرة الأولى التي واجهت فيها هذه المشكلة كانت عندما كنت أقوم بمسح القرص الصلب الخاص بي.لقد وجدت أن مجلد "documents\websites" مليئ بالقمامة، وتعرفت على العديد من المشاريع القديمة التي لم أعد أعمل عليها، وكلها فارغة، وليس ملفًا واحدًا، لذلك قمت بحذفها كلها.وبعد أسبوع - بام - لا أستطيع تشغيل/تصحيح أي من المواقع التي كنت أعمل بها في الوقت الحالي.الخطأ كان 500.19، لا يمكن قراءة ملف التكوين.

لذلك، إذا كنت تستخدم IIS Express ورأيت خطأ من فئة 500 يخبرنا عن تكوين القراءة، فتحقق بعناية من رسالة الخطأ واقرأ جميع المسارات المذكورة.إذا رأيت شيئًا مثل:

c:\users\user\documents\visual studio 2013\projects\WebProject1\WebProject1.web\web.config
c:\users\zeshan.munir\documents\visual studio 2015\projects\WebProject1\WebProject1.web\web.config
c:\users\zeshan.munir\documents\visual studio 2017\projects\WebProject1\WebProject1.web\web.config
etc..

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

بالمناسبة.في VisualStudio، على ProjectProperties/Web يوجد زر "إنشاء دليل افتراضي".إنه يفعل هذا الشيء بشكل أساسي، لذا يمكنك تجربته أولاً، لكن IIRC يمكنه أيضًا في بعض الأحيان مسح/الكتابة فوق/تبديل أقسام التكوين في ملف applicationHost.config، لذا كن حذرًا مع هذا الزر إذا كان لديك أي إعدادات مخصصة هناك.

في حالتي، كان هناك خطأ ما في تثبيت .NET Core Windows Hosting Bundle.

لقد قمت بتثبيت ذلك وأعدت تشغيل IIS باستخدام ("net stop كان /y" و"net start w3svc") بعد التثبيت، لكنني سأحصل على الخطأ 500.19 مع رمز الخطأ 0x8007000d ومصدر التكوين -1:0:.

تمكنت من حل المشكلة عن طريق إصلاح تثبيت .NET Core Windows Hosting Bundle وإعادة تشغيل IIS باستخدام الأوامر التي ذكرتها أعلاه.

أمل أن هذا يساعد شخصاما!

قد يكون هذا مرتبطًا أو لا يكون.... لقد بدأت بنفس الخطأ المذكور أعلاه، وبدأت في البحث على Google، وإجراء التغييرات، والحصول على أخطاء جديدة، وتكرار حلقة لا نهاية لها.

كان التغيير الذي سبب لي هذا الخطأ هو العبث بتفويض الميزات في IIS Manager ضمن قسم الإدارة بالخادم.أنا آسف لأنني لا أستطيع تذكر أي واحد قمت بتغييره، ولكن البحث على Google قد يساعد.

لقد أدى ذلك إلى تجاوز الخطأ الأول إلى مجموعة جديدة تمامًا من الأخطاء الأخرى، بعضها لا معنى له على الإطلاق.(سأحصل على خطأ واحد عند التشغيل ضمن دليل ظاهري، وقد أدى تحويله إلى تطبيق إلى حدوث خطأ آخر، وما إلى ذلك).ما حل أخيرًا هذه السلسلة من الأخطاء هو:مدير IIS، تجمعات التطبيقات، DefaultAppPool، تمكين تطبيقات 32 بت = صحيح

لقد بدأت هذا التطبيق على نظام التشغيل Windows XP 32 بت، وأنا الآن أقوم بتشغيله على نظام التشغيل Windows 7 64 بت.

لذا نأمل أن يساعد هذا شخصًا آخر.

تحقق من دقة ملف التكوين الخاص بك للعثور على جميع العلامات التي تحتها خط.أضعه في التعليق ويختفي الخطأ.

قم بالتعليق على الأسطر التالية في ملف web.config.

<modules>
    <!--<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>-->
</modules>

<handlers>
    <remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
    <!--<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <add name="ScriptResource" verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>-->
</handlers>

هذا سيفي بالغرض.

واجهت نفس الخطأ.كان لدي موقع IIS مزود بـ .net Framework الإصدار 2.0، لكن تطبيقي كان يحتاج إلى 4.0.لقد غيرت النسخة واشتغلت.

النشر فقط للتذكير إذا كان لدى شخص ما نفس المشكلة.

هذا الخطأ التفصيلي الجميل لا يزال موجودًا في عام 2019!أريد فقط أن أضيف ذلك إذا كان لديك web.config صالح ويمكن الوصول إليه على الأرجح مسألة التبعية.

كما ذكر البروتوكول الاختياري، كان أ AJAX وحدة، وكما هو الحال من قبل الآخرين عادة Rewrite وحدة.ما عليك سوى إبقاء عينيك مفتوحتين في web.config الخاص بك، ما هي الوحدات النمطية والمكتبات التي تشير إليها علاماتك منذ رمز الخطأ 0x8007000د يمكن أن يكون حول أي تبعية.

في حالتي لم أكن أدرك AspNetCore الحزمة كانت مفقودة وكان لا بد من تثبيتها!سعيدة جدا لأنني وجدت هذا المنصب!

كان لدي نفس المشكلة في نظام التشغيل Windows 7.

كان الحل هو الانتقال إلى الإعدادات الأساسية > الاتصال باسم > مستخدم محدد - وتسجيل الدخول كمستخدم، بدلاً من "التمرير" الافتراضي

هذا حل المشكلة بالنسبة لي.

ويندوز 7

جرب هذا،

قم بتشغيل cmd كمسؤول.

Unistall الكل iis.

start /w pkgmgr.exe /uu:IIS-WebServerRole;WAS-WindowsActivationService

أعد تثبيت iis وسيعمل بشكل طبيعي

آلان

لقد حصلت على هذا الخطأ عن طريق وضع <customErrors> علامة داخل <system.webServer> بدلاً من <system.web> حيث تنتمي.كان هناك تمايل قليلا تحت <customErrors> العلامة لكنني لم ألاحظ ذلك على الفور.

تأكد من تمكين كافة ميزات IIS بشكل صحيح.

  • يفتح خصائص الويندوز (تشغل أو إيقاف ميزات ويندوز).
  • قم بالتمرير لأسفل إلى خدمات معلومات الانترنت

  • افتح ال شبكة الانترنت بالإضافة إلى مربع المنسدلة

  • افتح ال ميزات تطوير التطبيقات بالإضافة إلى مربع المنسدلة
  • قم بالتأشير يدويًا على كافة خانات الاختيار اللاحقة، ثم انقر فوق "موافق".

enter image description here

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