سؤال

أقوم بتشغيل Windows 7 Ultimate (64 بت) باستخدام Visual Studio 2010 RC. لقد قررت مؤخرًا أن يكون لديك/تصحيح تطبيقاتي على IIS بدلاً من خادم DEV الذي يأتي معه.

ومع ذلك ، في كل مرة أحاول تشغيل تطبيق MVC ، أحصل على الخطأ التالي:

HTTP خطأ 403.14 - يتم تكوين خادم الويب المحظور لعدم سرد محتويات هذا الدليل. مفصلة

معلومات الخطأ

الوحدة النمطية DIRECTORYMODULE

الإخطار executeRequestHandler

خطأ معالج Staticfile

الرمز 0x00000000 المطلوب

عنوان URL http: // localhost: 80/mysite/

المسار المادي C: myProject mysite

طريقة تسجيل الدخول مجهولة تسجيل الدخول

المستخدم مجهول

لقد وضعت أ default.aspx ملف في الدليل وتلقيت الخطأ التالي:

HTTP Error 500.21 - معالج خطأ الخادم الداخلي "PageHandlerFactory -intemrated" لديه وحدة سيئة "ManagedPipelineHandler" في قائمة الوحدات النمطية الخاصة به

هل هناك أي خطوات أخرى نسيت اتخاذها للحصول على هذا العمل؟

ملاحظات: لقد قمت بتثبيت IIS 7.5 بعد تثبيت VS 2010 RC. لقد استخدمت زر "إنشاء دليل افتراضي" ضمن علامة التبويب "Web" في "خصائص" مشروع MVC في Visual Studio 2010. لقد تأكدت من أن التطبيق يستخدم مجموعة تطبيقات ASP.NET 4.

فيما يلي الميزات المثبتة لـ IIS لدي.

alt text

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

المحلول

لم يتم تسجيل ASP.NET 4 في IIS. اضطررت لتشغيل الأمر التالي في سطر الأوامر/التشغيل

Windows 32bit (x86)

٪ windir ٪ microsoft.net framework v4.0.30319 aspnet_regiis.exe -ir

Windows 64bit (x64)

٪ windir ٪ microsoft.net framework64 v4.0.30319 aspnet_regiis.exe -ir

ملاحظة من تعليق ديفيد مردوخ:

أن إصدار .NET قد تغير منذ نشر هذه الإجابة. تحقق من إصدار الإطار في دليل ٪ windir ٪ microsoft.net framework64 وقم بتغيير الأمر وفقًا لذلك قبل التشغيل (هو حاليًا v4.0.30319)

نصائح أخرى

شيء آخر للتأكد من أن لديك المجموعة التالية في الويب الخاص بك.

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>

تأكد من أن لديك المجموعة التالية في web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>

حل أفضل:

على الرغم من أن الحل أعلاه يعمل بشكل جيد تمامًا, ، يمكن أن يسبب مشكلة أخرى لأنه يدير جميع وحدات HTTP المسجلة في كل طلب (حتى في كل طلب من .jpg .gif .css .html .pdf إلخ) ومن الواضح أنه مضيعة للموارد. في حين أن

<system.webServer>
<modules>
  <remove name="UrlRoutingModule-4.0"/>
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="" />
</modules>
</system.webServer>

تأكد من أن سمة الشروط المسبقة فارغة تعني أنها ستعمل على جميع الطلبات. [اقرأ أكثر](http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html، "اقرأ المنشور الأصلي")

سبب آخر يجعل شخص ما يحصل على هذا الخطأ هو إذا كان الملف Global.asax لم يعد في المجلد الجذري.

كنت أتلقى أيضًا هذا الخطأ واكتشفت أن "إعادة توجيه HTTP" لم يتم تشغيله في Windows Server. يشير نشر المدونة هذا أيضًا: http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-reouting-reoutable-not-working-with-iis.aspx

المسيح الطيب. جربت كل الأشياء المذكورة أعلاه (لكنني وجدت إعداداتي متطابقة). حل آخر إذا كنت تواجه مشاكل:

http://support.microsoft.com/kb/980368

حاول تثبيت هذا KB لنظامك. إذا كنت ترى 404s ، فقد يكون ذلك لأنه ليس لديك هذا التحديث - ولم يتم العثور على وحدة ISAPI فقط وليس هناك الكثير مما يمكنك فعله حيال ذلك دون ذلك!

كما يمكنك التبديل apppool ل المدمجة الوضع. thnx إلى مايكل بيانشي (https://stackoverflow.com/a/7956546/1143515) ، أريد فقط التأكيد على ذلك.

بالنسبة لي على Azure Server 2012 R2 IIS 8.5 VM مع تطبيق ASP.NET MVC 5 (تم نشر BIN MVC 5) كان علي أن أفعل ما يلي من مطالبة CMD مرتفعة على الرغم من أنني تم تثبيتها 4.5 بالفعل:

dism /online /enable-feature /featurename:IIS-ASPNET45

مصدر: http://support.microsoft.com/kb/2736284

كما أنني غاشم القوة التي قمت بتثبيت جميع ميزات IIS مع PowerShell التالية:

import-module servermanager
add-windowsfeature web-server -includeallsubfeature

مصدر: http://www.iis.net/learn/install/installing-iis-85/installing-iis-85-onwindows-server-2012-r2

الآن تطبيقي يعمل.

لقد تم نقل تطبيق MVC إلى خادم جديد. تم تثبيت .NET 4 و MVC 3 ، لكن لا يزال لدينا "خطأ 403.14 ″. في هذه الحالة ، هذا يعني أن IIS لم يفهم أنه كان يتعامل مع تطبيق MVC ، كان يبحث عن الصفحة الافتراضية.

كان الحل بسيطًا: لم يتم تثبيت إعادة توجيه HTTP على الخادم.

Server Manager - أدوار - خادم الويب (IIS) - خدمات الأدوار - إعادة توجيه HTTP: غير مثبت. تثبيته ، حل المشكلة.

أيضًا إذا كان تطبيقك مسبقًا ، يجب أن يكون لديك

PrecompiledApp.config

في المجلد الجذر لتطبيقك وإلا يمكنك الحصول عليه HTTP Error 403.14 أيضًا.

حل آخر ممكن ، إذا كنت تتحرك حول Global.asax ، تأكد من أن الترميز يشير إلى فئة MVCapplication الصحيحة. نأمل أن ينقذ هذا شخصًا ما في المستقبل.

كنت قد استخدمت امتداد WebDeploy IIS لاستيراد مواقع الويب الخاصة بي من IIS6 إلى IIS7.5 ، لذلك كانت جميع إعدادات IIS تمامًا كما كانت في بيئة الإنتاج. بعد تجربة جميع الحلول المقدمة هنا ، لم ينجح أي منها بالنسبة لي ، كان علي ببساطة تغيير إعداد تجمع التطبيقات للموقع من كلاسيك إلى متكامل.

لقد قابلت نفس مشكلة 404.14 فجأة. أخيرًا ، تم إصلاح المشكلة عن طريق إلغاء تحديد "Precompile أثناء النشر" في إعدادات Publish Profile.

قمت بتغيير طريقي الافتراضي عند نقطة واحدة من:

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }

ل:

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index" }

الذي أعطاني خطأك. سعيد شخص ما ذكر التوجيه لأنني ربما كنت على هذا إلى الأبد.

في حالتي ، لم يتم تثبيت ASP.NET 4.5 على الخادم ، لذا قم بتثبيت ASP.NET 4.5 إصلاح المشكلة.

يمكنك حل هذا الخطأ عن طريق تشغيل CMD كمسؤول منenter image description here

افعل الشيء نفسه كما في الصورة لنظام التشغيل Windows 32 بت

ما عليك سوى إجراء تغييرات في 64 بت كـ Framework64 بدلاً من الإطار فقط من الذهاب إلى IIS وتحديث الموقع
إذا كنت لا تزال تحصل على بعض الأخطاء قم بإجراء تغييرات في تجمع التطبيقات

كان لدي مشكلة أخرى أدت إلى هذه القضية.

  • لقد تأكدت من أن تجمع التطبيق الخاص بي كان يعمل .NET 4 في الوضع المتكامل
  • لقد قمت بتشغيل aspnet_regiis.exe -i
  • لقد قمت بالتحقق من أذونات المجلد تم ضبطها بشكل صحيح للحساب الذي يعمل على تجمع التطبيق الخاص بي

لم ينجح أي من هذه الأشياء. اتضح أنه في الويب الخاص بي.

<remove name="WindowsAuthentication" />

من الواضح أن هذا يزيل وحدة مصادقة Windows التي بدت وكأنها تطرد كل شيء بطريقة ما.

آمل أن يساعد هذا شخصًا ما ، لأن هذا كلفني معظم المساء!

واجهة المستخدم مختلفة بعض الشيء في الإصدارات الأحدث من Windows Server. هنا هو المكان الذي يجب أن تتمكن من تمكين ASP.NET من أجل تشغيله على IIS

Fix IIS & Asp.net

إضافة حل آخر لهذه القضية.

في ملف global.asax.cs الخاص بي ، قمت بتعطيل ملفات PHP من استهلاكها بواسطة خط أنابيب MVC باستخدام ما يلي:

routes.IgnoreRoute( "{*php}" );

لقد فعلت ذلك سابقًا في مشروع MVC2 وقد عمل بشكل جيد ، لكن القيام بذلك في تطبيق MVC 3 الخاص بي تسبب في المشكلة المذكورة أعلاه.

سبب آخر يمكن أن يحدث هذا - الخاص بك RouteConfig.cs أو WebApiConfig.cs غير صالحة.

في حالتي ، كان لدي مسار محدد على هذا النحو (لاحظ أن قوسين بدلاً من الدعامة المجعد):

...
routeTemplate: "api/(something}"
...

يرجى ملاحظة أن مستخدمي Windows 8 تحتاج إلى إضافة/إزالة مكونات Windows وإزالة إصدار .NET REBOOT ثم إعادة التثبيت لتسجيله باستخدام IIS. أفترض أن هذا يحدث إذا حصلت على .NET 4.5 من Visual Studio وتثبيت IIS بعد ذلك.

غريب كما قد يبدو ، إعادة تثبيت IIS كان ما نجح بالنسبة لي ، مع تشغيل الأمر التالي من داخل مجلد إصدار .NET:

aspnet_regiis.exe /i

enter image description here

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

obs: شيء آخر قمت به أيضًا هو إزالة HTTP إعادة توجيه من ميزات الخادم في شاشة إدارة الخادم قبل إعادة تثبيت IIS. ربما كان لهذا أيضًا تأثير في حل المشكلة ، لكنني لست متأكدًا. لذا ، إذا كان إعادة تثبيت IIS لا يعمل ، فيرجى محاولة إزالة HTTP Redirect والمحاولة مرة أخرى. نأمل أن ينجح لك أيضًا.

لحل هذه المشكلة دون الحاجة إلى اللجوء إلى وضع 32 بت ، سيتعين عليك تحديث الرمز المصدر لهذا المشروع

public static void RegisterUrlRoutesFromAttributes(RouteCollection routes)
{
    // Enumerate assembly for UrlRoute attributes.
    List<MapRouteParams> routeParams = new List<MapRouteParams>();
    AppDomain.CurrentDomain.GetAssemblies()
        .ToList()
        .ForEach(assembly => routeParams.AddRange(GetRouteParamsFromAttributes(assembly)));

لقد رفعت هذه المشكلة كمناقشة على لوحة المناقشة في مشروع IT Cloud CodePlex.

http://itcloud.codeplex.com/discussions/262000

هذا عمل بالنسبة لي وقد يكون من المفيد لواحد آخر.

ربما تكون جميع المكونات المطلوبة موجودة أو/لا يتم تسجيلها بشكل صحيح. من أجل حل هذا ، حاول إلغاء تحديد جميع الخيارات داخل لوحة التحكم -> تشغيل ميزات Windows أو إيقافها -> خدمات معلومات الإنترنت -> خدمات الويب العالمية -> ميزات تطوير التطبيقات ، إلغاء تحديد جميع الخيارات وإعادة فحص جميعها ثم إعادة تعيين IIS و IIS و تحقق مما إذا تم حل المشكلة.

enter image description here

إذا كنت تقوم بتشغيل IIS 8.5 على Windows 8 أو Server 2012 ، فقد تجد أن تشغيل MVC 4/5 (.NET 4.5) لا يعمل في دليل افتراضي. إذا قمت بإنشاء إدخال مضيف محلي في ملف المضيف للعودة إلى الجهاز المحلي الخاص بك ، ثم قم بتوجيه موقع ويب محلي جديد إلى هذا المجلد (مع إدخال رأس المضيف المطابق) ستجد أنه يعمل بعد ذلك.

لقد قمت بإنشاء مساحة اسم جديدة (وبالتالي مجلد) مماثلة للطريق إلى وحدة تحكم (على سبيل المثال MvcApp/Test/SomeClasses.cs و MvcApp/Controllers/TestController.cs). هذا أدى أيضا في 403.14!

بالنسبة لي ، كان الحل هو إضافة حزمة nuget microsoft.aspnet.webpages (بالإضافة إلى تبعياتها للشفاء والبنية التحتية) إلى مشروع الويب الخاص بي.

كان لا بد من إعادة تثبيت البنية التحتية بقوة حيث لم تتم إضافتها كمرجع في البداية.

في حالتي ، تم تعيين إصدار CRL في Propertires Application Pool على رمز مُدار (لا تعرف السبب). وضعه على .NET CRL الإصدار v4.0.30319 حل المشكلة.

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