2013-02-04 40 views
0

我有一个解决方案,其中有两个项目。一个便携式领域项目,一个引用便携式领域项目的网站,以及两个参考MvcContrib。便携式区域未找到嵌入文件MVC4 C#

我遇到的问题是嵌入式资源,当我试图找到它们时,它们给我一个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); 
     } 
    } 
} 

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

Solution Explorer

+0

愚蠢的问题,但你的嵌入式资源的建设行动设置为“嵌入式资源”? –

+0

是的,他们这样做。我不确定这个问题是什么,所以我从头开始重建整个项目,并最终开始工作。谢谢。 – blackops

回答

0

无法重现该问题一旦我创建了一个新的项目,重做一切。我不确定这是否是一个错误,或者我错过了设置便携式区域的一个步骤。

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尝试使用而不是搜索静态文件中定义的路由。

+0

不错,我会记得下次。现在我已经完成了这个模型。谢谢 – blackops