Asp.net mvc 4 在MVC的App_Start()文件夹中使用AuthConfig、BundleConfig、FilterConfig、RouteConfig和WebApicConfig

Asp.net mvc 4 在MVC的App_Start()文件夹中使用AuthConfig、BundleConfig、FilterConfig、RouteConfig和WebApicConfig,asp.net-mvc-4,configuration-files,Asp.net Mvc 4,Configuration Files,你能详细解释一下MVC4中App_Start()文件夹的使用吗? 我看到这个文件夹实际上在以前的MVC版本中不可用。 此文件夹中有5个文件 AuthConfig BundleConfig 过滤器配置 RouteConfig WebApiConfig App\u Start只是将ASP.NET MVC配置分组在一起的另一个文件夹,在以前的ASP.NET MVC版本中,它是在Global.asax中完成的 ASP.NET MVC引入了越来越多的配置元素,此文件夹是放置此配置的理想选择。例如,MVC5

你能详细解释一下MVC4中App_Start()文件夹的使用吗? 我看到这个文件夹实际上在以前的MVC版本中不可用。 此文件夹中有5个文件

  • AuthConfig
  • BundleConfig
  • 过滤器配置
  • RouteConfig
  • WebApiConfig

  • App\u Start
    只是将ASP.NET MVC配置分组在一起的另一个文件夹,在以前的ASP.NET MVC版本中,它是在
    Global.asax
    中完成的

    ASP.NET MVC引入了越来越多的配置元素,此文件夹是放置此配置的理想选择。例如,MVC5的新auth。配置(如第三方登录提供程序的配置)也放置在此文件夹中(位于
    Startup.Auth.cs

    App\u Start
    不是ASP.NET/IIS识别的应用程序。如果需要,可以重命名该文件夹。这个名字只是一个惯例,比如
    App\u globalresources
    等等

    更新: 下面是每个文件的一些信息和参考点。这些文件的使用非常简单。我已经包括了一些在线参考资料,可能会帮助您了解更多

    • AuthConfig
      -注册外部身份验证提供程序。 有关详细信息,请参见ASP.NET MVC

    • BundleConfig
      -注册您的CSS和JS,以便对其进行绑定和缩小。另见

    • WebApiConfig
      -仅在使用时适用。它可用于配置特定于Web API的路由、任何Web API设置和Web API服务。另见

    • 过滤器配置
      -已注册的全局过滤器。这些过滤器应用于所有动作和控制器。另见

    • RouteConfig
      -您已经找到了相关信息


    在以前版本的MVC中,我们只在global.asax文件中使用registerOutes()方法来配置路由。MVC4内置了开发移动web应用程序的模板,WebAPI(RESTfulHTTP服务) AuthConfig.cs(授权)、BundleConfig.cs(web potimization)、FilterConfig.cs、RouteConfig.cs、WebApiConfig.cs(web API)文件,这些文件将在App_start文件夹中维护。 让我们看看这些config.cs文件。 AuthConfig.cs-此文件中的设置允许您使用第三方客户端凭据(如fb帐户、google帐户、yahoo帐户等)登录ASP.NET MVC站点,或者您也可以注册。 BundleConfig.cs:此文件中的设置允许使用捆绑提高应用程序的性能。。。 WebApiConfig:设置WEB API的路由设置(注意:url中不需要任何操作)

    • AuthConfi g.cs:用于确认安全设置,包括用于OAuth登录的站点

    • BundleConfig g.cs:用于注册捆绑和小型化所使用的捆绑包 系统。默认情况下会添加几个bundle,包括jQuery、jQueryUI、jQuery 验证、现代化和默认CSS引用

    • FilterConfi g.cs:毫不奇怪,它用于注册全局MVC过滤器。唯一的 默认情况下注册的过滤器是HandleErrorAttribute,但这是一个很好的放置位置 其他过滤器注册

    • RouteConfi g.cs:持有MVC confi g语句的祖父Route confi 祈祷

    • WebApiConfi g.cs:用于注册Web API路由,以及设置任何其他Web API路由 API配置设置


    Mvc4中引入了应用程序启动文件夹。它包含各种配置文件,如:

    • BundleConfig.cs
    • FilterConfig.cs
    • RouteConfig.cs
    • WebApiConfig.cs
    所有这些设置都在Global.asax.cs文件的App_Start方法中注册

    BundleConfig.cs:

    这用于为CS和JS文件创建和注册捆绑包。默认情况下,此文件中添加了各种捆绑包,包括jQuery、jQueryUI、jQuery验证、Modernizer和站点Css

    过滤器配置.cs-

    这用于创建和注册全局MVC筛选器错误筛选器、操作筛选器等。默认情况下,它包含HandleErrorAttribute筛选器

    RouteConfig.cs-

    这用于为Asp.NETMVC应用程序注册各种路由模式。默认情况下,一条路由在此处注册为默认路由

    WebApiConfig.cs-


    这用于注册各种WEB API路由,如Asp.Net MVC,以及设置任何其他WEB API配置设置。

    Mvc4中引入了App_start文件夹。它包含各种配置文件,如:

    • BundleConfig.cs
    • FilterConfig.cs
    • RouteConfig.cs
    • WebApiConfig.cs
    • AuthConfig.cs
    App_start在MVC中不是一个特殊的文件夹,也不是其中的类文件,它们只是具有不同应用程序的普通类文件 配置(过滤、捆绑、路由等)以及所有这些设置都在Global.asax.cs文件的应用程序启动方法中注册


    BundleConfig.cs: 这用于创建和注册CSS和JS文件的捆绑包。对于 例如jQuery、jQueryUI、jQuery验证、Modernizer和站点CSS

    捆绑和缩小是通过以下方式缩短请求加载时间的两种技术: 减少对服务器的请求数量并减少 请求的资产(如CSS和JavaScript) Microsoft为相同的程序集提供了Microsoft.Web.Optimization

    例如。 让我们创建两个包。一个用于样式(css),另一个用于脚本(javascript)

    您可以通过调用
    BundleCollection中的BundleCollection类Add()方法
    bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.min.css",
    "~/Content/mystyle.min.css"));
    
    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
     "~/Scripts/jquery-1.7.1.min.js",
     "~/Scripts/jquery.validate.min.js"));
    
    public class BundleConfig
    {
     public static void RegisterBundles(BundleCollection bundles)
     {
     //Adding StyleBundle to BundleCollection
     bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.min.css",
     "~/Content/mystyle.min.css"));
    
     //Adding ScriptBundle to BundleCollection
     bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
     "~/Scripts/jquery-1.7.1.min.js",
     "~/Scripts/jquery.validate.min.js"));
     }
    } 
    
    protected void Application_Start()
    {
     BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
    
    ( function( global, factory ) {
    
        "use strict";
    
        if ( typeof module === "object" && typeof module.exports === "object" ) {
    
            // For CommonJS and CommonJS-like environments where a proper `window`
            // is present, execute the factory and get jQuery.
            // For environments that do not have a `window` with a `document`
            // (such as Node.js), expose a factory as module.exports.
            // This accentuates the need for the creation of a real `window`.
            // e.g. var jQuery = require("jquery")(window);
            // See ticket #14549 for more info.
            module.exports = global.document ?
                factory( global, true ) :
                function( w ) {
                    if ( !w.document ) {
                        throw new Error( "jQuery requires a window with a document" );
                    }
                    return factory( w );
                };
        } else {
            factory( global );
        }
    
     public interface IAuthenticationFilter
     {
      void OnAuthentication(AuthenticationContext filterContext); 
      void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext);
     }
    
      public class CustomAuthenticationAttribute : ActionFilterAttribute, IAuthenticationFilter
      {
       public void OnAuthentication(AuthenticationContext filterContext)
       { 
        //logic goes here
       }
    
         public void OnAuthenticationChallenge(AuthenticationChallengeContext
     filterContext)
             {
                {  
                  //logic goes here
                 }
             }
    
     protected void Application_Start()
     {
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
     }
    
     [Authorize(Roles="Admin")]
     public class AdminController : Controller
     {
      // Logic goes here
     }
    
     public class UserController : Controller
     {
      [Authorize(Users="User1,User2")]
      public ActionResult LinkLogin(string provider)
      {
      // Logic goes here
      return View();
      }
     }
    
    protected void Application_Start()
         {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes); 
            BundleConfig.RegisterBundles(BundleTable.Bundles);
         }
    
    public static void RegisterRoutes(RouteCollection routes)
    {
    1.   routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
    2.
    3.  routes.MapRoute(
    4.      name: “Default”,
    5.      url: “{controller}/{action}/{id}”,
    6.      defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }
    7.      );
    }