سؤال

لدي ما يلي في ملف Global.asax.cs الخاص بي

routes.MapRoute(
    "Arrival",
    "{partnerID}",
    new { controller = "Search", action = "Index", partnerID="1000" }
);

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

يبدو SearchController الخاص بي هكذا

public class SearchController : Controller
{
    // Display search results
    public ActionResult Index(int partnerID)
    {
        ViewData["partnerID"] = partnerID;
        return View();
    }
}

ويعرض Index.aspx ببساطة ViewData["partnerID"] في الوقت الحالي.

لدي دليل ظاهري تم إعداده في IIS على نظام التشغيل Windows XP يسمى Test.

إذا قمت بتوجيه متصفحي إلى http://localhost/Test/ ثم أحصل على 1000 معروض كما هو متوقع.ومع ذلك، إذا حاولت http://localhost/Test/1000 أحصل على خطأ لم يتم العثور على الصفحة.أيه أفكار؟

هل هناك أي اعتبارات خاصة لتشغيل MVC في دليل ظاهري؟

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

المحلول

وIIS 5.1 يفسر عنوان موقعك بحيث لها تبحث عن مجلد باسم 1000 ضمن مجلد يدعى Test. لماذا ذلك؟

<اقتباس فقرة>   

ويحدث هذا لأن IIS 6 فقط   استدعاء ASP.NET عندما يرى   "ملحق اسم الملف" في URL هذا   تعيينها إلى aspnet_isapi.dll (وهو   C / C ++ تصفية ISAPI مسؤول عن   استدعاء ASP.NET). منذ توجيه هو   ودعا الصافي IHttpModule   UrlRoutingModule، فإنه لا يحصل   الاحتجاج ما لم يحصل ASP.NET نفسها   الاحتجاج، والذي يحدث فقط عندما   aspnet_isapi.dll يحصل الاحتجاج، التي   يحدث فقط عندما يكون هناك .aspx في   وURL. لذا، لا .aspx اتصال، لا   UrlRoutingModule، وبالتالي 404.

وأسهل حل هو:

<اقتباس فقرة>   

إذا كنت لا تمانع في وجود .aspx في الخاص   عناوين المواقع، واذهبوا من خلال التوجيه الخاص بك   التكوين، مضيفا .aspx اتصال قبل   إلى الأمام، خفض في كل نمط. إلى عن على   سبيل المثال، استخدام   {} تحكم .aspx اتصال / {العمل} / {معرف} أو   myapp.aspx / {تحكم} / {العمل} / {معرف}.   لا تضع .aspx اتصال داخل   أسماء المعلمات مجعد قوس، أو في   القيم 'الافتراضية'، لأنها ليست   في الحقيقة جزء من اسم وحدة تحكم -   انها فقط في URL لتلبية IIS.

المصدر: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

نصائح أخرى

إذا كنت تقوم بذلك على نظام التشغيل Windows XP، فأنت تستخدم IIS 5.1.تحتاج إلى الحصول على ASP.Net للتعامل مع طلبك.تحتاج إما إلى إضافة امتداد إلى مساراتك ({controller}.mvc/{action}/{id}) وتعيين هذا الامتداد إلى ASP.Net أو تعيين جميع الطلبات إلى ASP.Net.ال http://localhost/Test يعمل لأنه ينتقل إلى Default.aspx الذي يتم التعامل معه خصيصًا في مشاريع MVC.

بالإضافة إلى ذلك، تحتاج إلى تحديد http://localhost/Test/Search/Index/1000.وحدة التحكم وأجزاء الإجراء ليست اختيارية إذا كنت تريد تحديد معرف.

وهناك عدد من الاعتبارات عند استخدام الدلائل الظاهرية في التطبيق الخاص بك.

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

وحاول تحديد المسار الظاهري: انقر بالزر الأيمن على مشروع MVC، خصائص، التبويب شبكة الإنترنت، وهناك أدخل الموقع المناسب

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