سؤال

يبدو أن هذا يجب أن يكون سهلاً ، لكن لسبب ما ليس لدي حظ. أقوم بترحيل تطبيق WebForms الحالي إلى MVC ، لذلك أحتاج إلى الحفاظ على جذر الموقع يشير إلى صفحات ASPX الحالية الخاصة بي في الوقت الحالي وتطبيق التوجيه فقط على الطرق المسماة. هذا ما لدي:

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

        RouteTable.Routes.Add(
            "Root",
            new Route("", new DefaultRouteHandler())
        );

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Calendar2", action = "Index", id = "" }  // Parameter defaults
        );
    }

لذلك يجب تجاهل صفحات ASPX ، ويجب التعامل مع عنوان URL الجذر الافتراضي من قبل هذا المعالج:

public class DefaultRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        return System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(
                "~/Dashboard/default.aspx", typeof(Page)) as IHttpHandler;
    }
}

يبدو أن هذا يعمل بشكل جيد ، لكن YPOD الناتج يعطيني هذا:

تم العثور على عناصر تحكم متعددة مع نفس المعرف '__page'. يتطلب Trace أن تكون عناصر التحكم معرفات فريدة.

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

خلاصة القول - أود ببساطة إعادة توجيه مسار عنوان URL للجذر إلى ASPX من اختياري - هل يمكن لأي شخص إلقاء بعض الضوء؟

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

المحلول 2

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

تعديل: حسنًا ، هذه في الواقع لا تزال مشكلة - لست متأكدًا من سبب عملها من قبل ، لكنها عشوائية بعض الشيء. يبدو أن خلاصة القول هي أن MVC لا يبدو أنه يلعب بشكل جيد مع Trace.Axd Parser في بعض الحالات التي تنتج علامة تصنيف صالحة تمامًا. ليس لديّ تفسير جيد حقًا ، لكن تعطيل التتبع في الويب. يتجاوز الخطأ الخطأ. لأغطيتي في الوقت الحالي ، هذا جيد بما فيه الكفاية ، لكنني أحب أن أسمع تفسيرًا أفضل من شخص آخر ...

نصائح أخرى

أنا لا أفهم مشكلتك حقًا ، فربما لا أكون ماهرًا بما فيه الكفاية. على أي حال سأحاول ... ؛)

إذا كنت ترغب في إعادة التوجيه من مسار الجذر ، فلماذا لا تستخدم المستند الافتراضي من IIS ، ضعه على index.aspx على سبيل المثال ، ثم أضف في هذه الصفحة استجابة. REREDIRECT إلى الصفحة التي تريد إعادة توجيهها؟

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