Asp.net mvc 4 在MVC的App_Start()文件夹中使用AuthConfig、BundleConfig、FilterConfig、RouteConfig和WebApicConfig
你能详细解释一下MVC4中App_Start()文件夹的使用吗? 我看到这个文件夹实际上在以前的MVC版本中不可用。 此文件夹中有5个文件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
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
等等
更新:
下面是每个文件的一些信息和参考点。这些文件的使用非常简单。我已经包括了一些在线参考资料,可能会帮助您了解更多
-注册外部身份验证提供程序。 有关详细信息,请参见ASP.NET MVCAuthConfig
-注册您的CSS和JS,以便对其进行绑定和缩小。另见BundleConfig
-仅在使用时适用。它可用于配置特定于Web API的路由、任何Web API设置和Web API服务。另见WebApiConfig
-已注册的全局过滤器。这些过滤器应用于所有动作和控制器。另见过滤器配置
-您已经找到了相关信息RouteConfig
- 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配置设置
- BundleConfig.cs
- FilterConfig.cs
- RouteConfig.cs
- WebApiConfig.cs
这用于注册各种WEB API路由,如Asp.Net MVC,以及设置任何其他WEB API配置设置。Mvc4中引入了App_start文件夹。它包含各种配置文件,如:
- BundleConfig.cs
- FilterConfig.cs
- RouteConfig.cs
- WebApiConfig.cs
- AuthConfig.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. );
}