便携式地区没有发现嵌入文件MVC4 C#(Portable Area not finding emb

2019-08-16 18:32发布

我有带有两个项目的解决方案。 便携式领域的项目,网站引用便携领域的项目,这两个参考MvcContrib。

我的问题有与嵌入的资源,他们给了我一个404错误,当我试图让他们。 好像它试图访问物理路径不是DLL。 局部视图工作正常。

我试图访问该文件看起来像这样我的Visual Studio解决方案资源管理器内

AdHocReporting /地区/ AdHocReportBuilder /内容/ 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 }
            );
        }
    }
}

这里是具有参考便携领域的网站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);
        }
    }
}

这里是一个什么我的解决方案探索看起来像一个图像:

Answer 1:

一旦我创建了一个新的项目,重做一切都无法重现该问题。 我不知道这是否是一个错误或我只是错过了在建立我的便携式领域的一个步骤。



Answer 2:

在web.config中添加为每种文件类型:

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

这将使IIS尝试使用而不是搜索静态文件中定义的路由。



文章来源: Portable Area not finding embedded files MVC4 C#