0

2つのプロジェクトを含むソリューションがあります。ポータブルエリアプロジェクト、およびポータブルエリアプロジェクトを参照するWebサイト、および両方がMvcContribを参照します。

私が抱えている問題は、埋め込まれたリソースにあります。それらにアクセスしようとすると、404エラーが発生します。dllではなく物理パスにアクセスしようとしているようです。部分ビューは正常に機能します。

アクセスしようとしているファイルは、VisualStudioソリューションエクスプローラー内で次のようになります。

AdHocReporting / Areas / AdHocReportBuilder / Content / adhoc.css(ビルドアクションが埋め込まれています)

ポータブルエリアのルーティングは次のとおりです。

using System.Web.Mvc;
using MvcContrib.PortableAreas;

namespace AdHocReporting.Areas.AdHocReportBuilder
{
    public class AdHocReportBuilderAreaRegistration : PortableAreaRegistration
    {
        public override string AreaName
        {
            get { return "AdHocReportBuilder"; }
        }

        public override void RegisterArea(AreaRegistrationContext context, IApplicationBus bus)
        {
            RegisterRoutes(context);
            RegisterAreaEmbeddedResources();

        }
        private void RegisterRoutes(AreaRegistrationContext context)
        {
            context.MapRoute(
              AreaName + "_content",
              base.AreaRoutePrefix + "/Content/{resourceName}",
              new { controller = "EmbeddedResource", action = "Index", resourcePath = "Content" },
              new[] { "MvcContrib.PortableAreas" }
          );

            context.MapRoute(
                AreaName + "_default",
                base.AreaRoutePrefix + "/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

これは、ポータブル領域への参照があるWebサイトGlobal.aspxです。

namespace AdHocReportingSite
{
    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            PortableAreaRegistration.RegisterEmbeddedViewEngine();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
    }
}

これが私のソリューション探索がどのように見えるかの画像です:

ソリューションエクスプローラー

4

2 に答える 2

0

新しいプロジェクトを作成してすべてをやり直すと、問題を再現できませんでした。エラーなのか、ポータブル エリアの設定手順を間違えただけなのかはわかりません。

于 2013-05-20T19:21:29.063 に答える
0

ファイルの種類ごとに Web.Config を追加します。

<system.webServer>
  <handlers>
    <add name="js" path="*.js" verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="File" preCondition="integratedMode" />
  </handlers>
</system.webServer>

これにより、IIS は静的ファイルを検索する代わりに、定義されたルートを使用しようとします。

于 2014-09-12T19:29:34.017 に答える