我创建了一个webforms网站,它运行webforms和MVC 4.0。我按照this article中的步骤创建了一个MVC可移植区域,我正尝试使用nuget中的 MvcContrib 将其实现到我的webforms解决方案中。
我在我的webforms解决方案中添加了一个 Areas 文件夹,其中包含可移植区域/视图文件夹中的web.config文件。此外,我在我的主要webforms项目中添加了对便携式区域的引用。我还将我在便携式区域中的所有视图都更改为EmbeddedResources。
然而,当我尝试在浏览器中访问我的便携式区域控制器时,出现错误。 我的webforms解决方案似乎找不到便携式区域控制器/视图,因为它在我的webforms解决方案中搜索视图而不是我的便携区域。
我的便携式区域中的我的AreaRegistration类看起来像这样:
public class DemoAreaRegistration : PortableAreaRegistration
{
public override string AreaName
{
get { return "Demo"; }
}
public override void RegisterArea(AreaRegistrationContext context, IApplicationBus bus)
{
RegisterRoutes(context);
bus.Send(new PortableAreaStartupMessage("Registering PortableArea Area"));
RegisterAreaEmbeddedResources();
}
private void RegisterRoutes(AreaRegistrationContext context)
{
context.MapRoute(
AreaName + "_scripts",
base.AreaRoutePrefix + "/Scripts/{resourceName}",
new {controller = "EmbeddedResource", action = "Index", resourcePath = "scripts"},
new[] {"MvcContrib.PortableAreas"}
);
context.MapRoute(
AreaName + "_images",
base.AreaRoutePrefix + "/images/{resourceName}",
new {controller = "EmbeddedResource", action = "Index", resourcePath = "images"},
new[] {"MvcContrib.PortableAreas"}
);
context.MapRoute(
AreaName + "_default",
base.AreaRoutePrefix + "/{controller}/{action}/{id}",
new {action = "Index", id = UrlParameter.Optional},
new[] {"PortableArea.Areas.Demo.Controllers", "MvcContrib"}
);
}
}
答案 0 :(得分:0)
已回答here
在每个文件类型的Web.Config中添加:
<system.webServer>
<handlers>
<add name="js" path="*.js" verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="File" preCondition="integratedMode" />
</handlers>
</system.webServer>
这将使IIS尝试使用已定义的路由,而不是搜索静态文件。