1

私は、既存の MVC アプリケーションを機能させるために 1 日を費やしました。

次のような状況があります。

1) カスタム領域を持つ既存の ASP.Net MVC アプリケーションの作業を開始しました

2) オフィスでうまくいっている

3) 私は自宅にいて、VPN 接続を行い、TFS から最新のコードを取得しました。

4) 正常にビルドされていますが、Visual Studio 2012 内から実行しようとすると、登録された領域が表示されません。

HTTP 404. 探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。以下をご確認ください

URL を入力し、スペルが正しいことを確認してください。

要求された URL に対して既定のドキュメントが構成されておらず、ディレクトリの参照がサーバーで有効になっていません。

5) 通常の MVC Web サイト (AreaRegistrations なし) を作成し、Visual Studio 2012 で実行しましたが、エラーは発生しません。

6) RouteDebuggerを試しましたが、次のエラーが発生し続けます。

シーケンスには要素が含まれていません

私もそれを解決しようとして行き詰まりました。実際に足を踏み入れて、どこが失敗しているかを確認する別の方法があれば、それが役立ちます。

実際の Area フォルダー: MyProject\Areas\MyCustomArea 私が持っている

MyProject\Areas\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 と Web 最適化を使用していることを念頭に置いてください。

長すぎたらごめんなさい

4

1 に答える 1

3

AreaRegistration.RegisterAllAreas()アプリケーションの起動時に が呼び出されることを確認してください。通常の場所はApplication_Start、global.asax にあります。

于 2014-03-21T16:40:09.213 に答える