zoukankan      html  css  js  c++  java
  • mvc Areas注册域常见问题一

    添加Areas主要目的是区分一些不同的业务,避免不同的业务都在同一个Controllers下造成混乱,在MVC项目上右键->添加区域->我添加了HMbolie和PClient两个区域->如下图
    HMbolieAreaRegistration.cs和PClientAreaRegistration.cs是默认生成的,代码中的第四个参数是 string[] namespaces命名空间参数。
    namespace Demo.Areas.HMbolie
    { 
         public class HMbolieAreaRegistration : AreaRegistration
        {
            public override string AreaName
            {
                get
                {
                return"HMbolie";
                }
            }
    
            public override void RegisterArea(AreaRegistrationContext context)
            {
                context.MapRoute(
                    "HMbolie_default",
                    "HMbolie/{controller}/{action}/{id}",
                    new { action = "Index", id = UrlParameter.Optional },
                     new string[] { "Demo.Areas.HMbolie.Controllers" }
                );
            }
        }
    }
    
    
    namespace Demo.Areas.PClient
    {
        public class PClientAreaRegistration : AreaRegistration
        {
            public override string AreaName
            {
                get
                {
                    return "PClient";
                }
            }
    public override void RegisterArea(AreaRegistrationContext context)
            {
                context.MapRoute(
                    "PClient_default",
                    "PClient/{controller}/{action}/{id}",
                     new { action = "Index", id = UrlParameter.Optional },
                     new string[] { "Demo.Areas.PClient.Controllers" }
                );
            }
        }
    }
    此时Areas已经创建完成,但是在iis下运行的时候感觉Areas没有起到作用,在官网中看到Areas是通过Global中的Application_Start()中的 AreaRegistration.RegisterAllAreas();来完成注册的,代码如下:
    
    
             /// <summary>
            /// ApplicationStart
            /// </summary>
            protected void Application_Start()
            {
                //System.Threading.Thread.Sleep(10000);
                AreaRegistration.RegisterAllAreas();
                RegisterGlobalFilters(GlobalFilters.Filters);
                RegisterRoutes(RouteTable.Routes);
            }
    我在Start()中线程睡10s中才启动,断点调试发现AreaRegistration.RegisterAllAreas()中根本没有找到HMbolieAreaRegistration.cs和PClientAreaRegistration.cs这两个相关的Areas类,iis下的代码是最新部署,但是却不执行?
    解决方法如下:删除iis缓存文件
    • C:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET Files
    • C:WindowsMicrosoft.NETFramework64v4.0.30319Temporary ASP.NET Files
    • 我删除了Temporary ASP.NET Files 下的缓存文件后,重启网站然后调试代码,一切都如愿的加载了。
  • 相关阅读:
    在打工生涯中 规划自己的老板梦
    不屈不挠的战斗意志, 看创业者九大素质十条规则
    一条走不完的路,想创业先给自己几个问号
    摄影偶遇
    封顶法则:企业家抱负决定企业高度
    不批评、不责备、不抱怨、不攻击——经典沟通原则15条
    企业成败大关键,用情绪智力提升你的领导魅力
    穿汉服有感
    Oracle Advanced Security:Column Encryption Overhead
    在OEL5上安装配置Oracle Gird Control 10.2.0.5
  • 原文地址:https://www.cnblogs.com/ligl/p/5162335.html
Copyright © 2011-2022 走看看