ASP.Net MVC 4 Районы не регистрируются. Ошибка HTTP 404 из Visual Studio 2012

Я потратил целый день, пытаясь заставить существующее приложение MVC работать.

У меня следующая ситуация:

1) Я начал работать над существующим приложением ASP.Net MVC с пользовательской областью

2) Хорошо работает в офисе

3) Я дома, и у меня есть VPN, и я получил последний код от TFS.

4) Он успешно строится, но если я пытаюсь запустить его из Visual Studio 2012, он не может видеть зарегистрированные области

HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), возможно, был удален, изменилось его имя или временно недоступен. Пожалуйста, просмотрите следующее

URL и убедитесь, что оно написано правильно.

Документ по умолчанию не настроен для запрошенного URL, и просмотр каталога не включен на сервере.

5) Я создал обычный веб-сайт MVC (NO AreaRegistrations) и запустил его в Visual Studio 2012, он не дает ошибок

6) Я попробовал RouteDebugger и продолжаю получать следующую ошибку:

Последовательность не содержит элементов

Я также застрял, пытаясь решить это. Если есть другой способ, чтобы на самом деле вступить в него, чтобы увидеть, где он терпит неудачу, это поможет.

В фактической папке Area: MyProject\Areas\MyCustomArea у меня есть

MyProject \ Области \MyCustomArea\AreaRegistration.cs:

using Mvc = System.Web.Mvc;

    namespace MyProject.Areas.MyCustom
    {
        public class AreaRegistration : Mvc.AreaRegistration
        {
            public override string AreaName
            {
                get { return "MyCustomArea"; }
            }

            public override void RegisterArea(Mvc.AreaRegistrationContext context)
            {
                RouteConfig.RegisterRoutes(context);
            }
        }
    }

И MyProject \ Areas \ MyCustomArea \ RouteConfig.cs:

using System.Web.Mvc;
using System.Web.Optimization; // <-- DOES THIS REFERENCE HAVE AN IMPACT?

namespace MyProject.Areas.MyCustomArea
{
    public class RouteConfig
    {
        public static void RegisterRoutes(AreaRegistrationContext context)
        {

            context.MapRoute(
                "MyCustomArea_Default",
                "MyCustomArea/{controller}/{action}/{id}",
                defaults: new { action = "Index", id = UrlParameter.Optional },
                namespaces: new[] { "MyProject.Areas.MyCustomArea.Controllers" });
        }
    }
}

В моей папке App_Start нет файла Route.config.cs

У меня есть MyProject\packages.config со следующим:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="RazorGenerator.Mvc" version="2.2.2" targetFramework="net45" />
  <package id="WebActivatorEx" version="2.0.5" targetFramework="net45" />
</packages>

Я использую System.Web.Optimization

Мой файл Web.config имеет следующее:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
        <add namespace="Kendo.Mvc.UI" />
      </namespaces>
    </pages>
  </system.web>

Могу ли я что-нибудь сделать, чтобы заставить его работать, учитывая, что он работает на работе, и я использую RazorGenerator, а также веб-оптимизацию, если они оказывают влияние

Извините, если это было слишком долго

1 ответ

Решение

Убедиться, что AreaRegistration.RegisterAllAreas() вызывается при запуске вашего приложения. Обычное место в Application_Start в global.asax.

Другие вопросы по тегам