2016-07-19 2 views
0

В моем проекте я создаю Администратор проекта Areas.Угловой html5mode с ASP.NET MVC 5

Когда html5mode является ложным, адрес localhost: xxxx/Admin работает хорошо.
Но когда html5mode верно, он не работает и перенаправляется на дом.

$locationProvider.html5Mode({ 
     enabled: true, 
     requireBase: false 
    }); 

web.config

<rewrite> 
      <rules> 
       <rule name="angularjs routes" stopProcessing="true"> 
        <match url=".*" /> 
        <conditions logicalGrouping="MatchAll"> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
         <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" /> 
        </conditions> 
        <action type="Rewrite" url="/" /> 
       </rule> 
      </rules> 
     </rewrite> 

HomeController.cs

using System.Web.Mvc; 

namespace SuperPaint.Areas.Admin.Controllers 
{ 
    public class HomeController : Controller 
    { 
     // GET: Admin/Home 
     public ActionResult Index() 
     { 
      return View(); 
     } 
    } 
} 

AdminAreaRegistration.cs

using System.Web.Mvc; 
using System.Web.Optimization; 

namespace SuperPaint.Areas.Admin 
{ 
    public class AdminAreaRegistration : AreaRegistration 
    { 
     public override string AreaName => "Admin"; 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      RegisterRoutes(context); 
      RegisterBundles(); 
     } 

     private void RegisterRoutes(AreaRegistrationContext context) 
     { 
      RouteConfig.RegisterRoutes(context); 
     } 

     private void RegisterBundles() 
     { 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
     } 
    } 
} 

RouteConfig.cs

using System.Web.Mvc; 

namespace Project.Areas.Admin 
{ 
    internal static class RouteConfig 
    { 
     internal static void RegisterRoutes(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "Admin_default", 
       "Admin/{controller}/{action}/{id}", 
       new { action = "Index", controller = "Home", id = UrlParameter.Optional }, 
       new[] { "Project.Areas.Admin.Controllers" } 
      ); 
     } 
    } 
} 
+0

Не могли бы вы дать код страницы администратора, а? – Nzall

ответ

0

Измените правила web.config на:

<rules> 
      <rule name="IgnoreAdminURLs" stopProcessing="true"> 
       <match url ="(admin\/)" ignoreCase="true" /> 
       <action type="None" /> 
      </rule> 
      <rule name="angularjs routes" stopProcessing="true"> 
       <match url=".*" /> 
       <conditions logicalGrouping="MatchAll"> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="/" /> 
      </rule> 
</rules> 
+0

Спасибо за помощь. Работает. –