باستخدام ASP.NET MVC2 ، لا يتم إعادة توجيه المسار الفارغ بواسطة IIS 6

StackOverflow https://stackoverflow.com/questions/4226793

سؤال

أولاً ، اسمحوا لي أن أشرح أنني في حل مستضيف ، وليس هناك الكثير يمكنني القيام به بطرق التكوين والإعدادات لـ IIS 6.

أعمل MVC2 إلى حد ما ، أنا أستخدم رمز Global.asax التالي:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

        routes.MapRoute(
            "Root",
            "",
            new { controller = "Default", action = "Index", id = "" }
        );
    }

في المسار الأول ، اضطررت إلى تحديد {Controller} .aspx ، نظرًا لعدم قدرة IIS 6 على تنفيذ رمز ASPX (أو شيء من هذا القبيل ، ليس متأكدًا حقًا).

وهو أمر جيد ، الأعمال التالية: hxxp: //mysite.com/home.aspx ، hxxp: //mysite.com/projects.aspx ، hxxp: //mysite.com/contact.aspx

التي هي جميع وحدات التحكم ويمكنني تشغيل أفعالها المحترمة أيضًا.

المشكلة هي أنه لا يمكنني القيام بعنوان URL فارغ بشكل صحيح (أي hxxp: //mysite.com/) ، فإنه يعطيني خطأ "تم رفض قائمة الدليل".

والسؤال الذي لدي ، هو مع ملف افتراضي. aspx الموجود في الجذر (الذي يتم تنفيذه) ، هل يمكنني تحميل وحدة تحكم المنزل دون استخدام استجابة بسيطة.

شكرا لك ماثيو

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

المحلول

حقيقة أنك تحصل على "قائمة الدليل المنرية" تعني أن ISAPI filetr لا يتطابق مع العمل مع MVC.

نصائح أخرى

إن حقيقة أنك تحصل على "Directory Serving" تعني أنه ليس لديك مستند افتراضي ، وبالتالي يحاول الخادم إظهار قائمة بالملفات في المجلد الجذري.

قم بتحديث المستند الافتراضي إلى شيء مثل "default.aspx". يجب أن يكون لدى مزود الاستضافة خيار لهذا الغرض. هذا شائع جدا.

يمكنك تعطيل هذا السلوك على IIS6 و IIS7

// Disable IIS looking at physical files and directories
RouteTable.Routes.RouteExistingFiles = true;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top