请详细解释一下,在MVC4中使用App_Start()文件夹? 我看到这个文件夹实际上在以前版本的MVC中不可用。 此文件夹中有5个文件。
答案 0 :(得分:36)
App_Start
只是将ASP.NET MVC配置组合在一起的另一个文件夹,在以前的ASP.NET MVC版本中,{MV}在Global.asax
完成。
ASP.NET MVC引入了越来越多的配置元素,此文件夹非常适合放置此配置。例如,MVC 5的新版本。配置(例如第三方登录提供程序)也放在此文件夹中(Startup.Auth.cs
)。
App_Start
不是ASP.NET / IIS认可的ASP.NET special folder。您可以根据需要重命名该文件夹。名称只是一个约定,如App_GlobalResouces
等。
以下是每个文件的一些信息和参考点。使用这些文件非常简单。我已经包含了一些可能有助于您了解更多信息的在线参考资料。
AuthConfig
- 注册外部身份验证提供程序。
有关更多信息,请参阅ASP.NET MVC external authentication providers。
BundleConfig
- 注册您的CSS和JS,以便它们可以捆绑和缩小。另请参阅ASP.NET MVC: Guidance: Bundling and Minification。
WebApiConfig
- 仅在您使用Web API时才适用。它可用于配置特定于Web API的路由,任何Web API设置和Web API服务。另请参阅configuring ASP.NET MVC Web API 2
FilterConfig
- 已注册的全局过滤器。这些过滤器适用于所有操作和控制器。另请参阅ASP.NET MVC 3: Global action filters
RouteConfig
- 您已找到信息。
答案 1 :(得分:14)
在Mvc4中引入了App_start文件夹。它包含各种配置文件,如:
App_start不是MVC中的特殊文件夹,也不是其中的类文件,这些只是具有不同应用程序的普通类文件 配置(过滤,捆绑,路由等),所有这些设置都在Global.asax.cs文件的Application_Start方法中注册。
这用于创建和注册CSS和JS文件的包。对于 例如。 jQuery,jQueryUI,jQuery验证,Modernizr和Site CSS ..
捆绑和缩小是两种提高请求加载时间的技术 减少对服务器的请求数量并减少其大小 请求的资产(例如CSS和JavaScript。) Microsoft为相同的
提供程序集Microsoft.Web.Optimization
例如。 让我们创建两个Bundles。一个用于样式(css),另一个用于脚本(javascript)
您可以通过调用
来分别为css和javascripts创建包 BundleCollection类BundleConfig.cs文件中的Add()方法。
第1步:
创建样式包
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"));
第2步:
上面的bundle在BundleConfig类中定义为:
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")); } }
第3步:
注册捆绑
所有捆绑包都在Global.asax的Application_Start事件中注册:
protected void Application_Start() { BundleConfig.RegisterBundles(BundleTable.Bundles); }
缩小是一种删除不必要字符的技巧(例如 空格,换行符,制表符)以及JavaScript和CSS中的注释 文件减小了大小,反过来又改善了网页的加载时间。对于 例如。 jquery-1.7.1.min.js是jquery-1.7.1的缩小的js文件, 主要用于生产环境,非产品你可以更好地使用非 缩小的js具有更好的可读性。
例如。
未压缩的js中的Jquery函数可能类似于:
( 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 );
}
压缩或缩小的js中的上述函数将如下所示:
!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)
}
这用于创建和注册全局MVC过滤器:
例如。
注意:如上所述,过滤器按顺序执行。
例如。 MVC5引入的身份验证过滤器:
public interface IAuthenticationFilter { void OnAuthentication(AuthenticationContext filterContext); void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext); }
您可以通过实施
来创建CustomAuthentication过滤器属性 IAuthenticationFilter如下所示 -
public class CustomAuthenticationAttribute : ActionFilterAttribute, IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext filterContext)
{
//logic goes here
}
在OnAuthentication方法
之后运行
public void OnAuthenticationChallenge(AuthenticationChallengeContext
filterContext)
{
{
//logic goes here
}
}
配置过滤器
您可以在自己的应用程序中配置自己的自定义过滤器 以下三个级别:
全球水平
将过滤器注册到Application_Start事件中 Global.asax.cs文件:
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(); } }
这用于为您的Asp.Net MVC注册各种路由模式 应用。路由在ASP.NET MVC应用程序中起着重要作用 执行流程,它使用a将请求URL映射到特定的控制器操作 路由表。我们可以为引擎定义路由规则,以便它可以映射>传入的URL到适当的控制器。路由引擎使用路由规则 在Global.asax文件中定义,以便解析URL并查找 相应控制器的路径。我们可以找到以下一段代码>在Global.asax文件的Application_Start()方法中。
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
我们可以在App_Start文件夹下找到RouteConfig.cs文件。如果我们遵循 在RouteConfig类中的这个方法,我们将找到一个默认配置 路线如下。第3行到第7行正在配置一条默认路由。
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. ); }
第4行:路线的名称。第5行:代表URL:Controller, 动作后跟id(如果有的话)。第6行:默认控制器 首页,默认操作将是索引,ID是可选的。
这用于注册各种WEB API路由,如Asp.Net MVC,以及设置任何附加的WEB API配置设置。
用于注册外部身份验证提供程序 例如。如果您希望用户使用来自外部提供商(如Facebook,Twitter,Microsoft或Google)的凭据登录,然后将这些提供商的某些功能集成到您的Web应用程序中。
答案 2 :(得分:3)
在Mvc4中引入了App_start文件夹。它包含各种配置文件,如:
for your application。所有这些设置都在Global.asax.cs文件的App_Start方法中注册
<强> BundleConfig.cs:强>
这用于为CS和JS文件创建和注册包。默认情况下,在这个文件中添加了各种包,包括jQuery,jQueryUI,jQuery验证,Modernizer和Site Css ..
<强> FilterConfig.cs - 强>
这用于创建和注册全局MVC过滤器错误过滤器,动作过滤器等。默认情况下它包含HandleErrorAttribute过滤器。
<强> RouteConfig.cs - 强>
这用于为您的Asp.Net MVC应用程序注册各种路由模式。默认情况下,此处注册了一条名为“默认路由”的路由。
<强> WebApiConfig.cs - 强>
这用于注册各种WEB API路由,如Asp.Net MVC,以及设置任何其他WEB API配置设置。
答案 3 :(得分:1)
在以前版本的MVC中,我们只在global.asax文件中使用RegisterRoutes()方法来配置路由。 MVC 4内置模板来开发移动Web应用程序,web apis(restful http服务).so来配置所有那些模板驱动开发的路由,我们将使用 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中不需要任何操作)
答案 4 :(得分:0)
AuthConfi g.cs:用于配置安全设置,包括OAuth登录网站。
BundleConfi g.cs:用于注册捆绑和缩小使用的捆绑包 系统。默认情况下会添加几个包,包括jQuery,jQueryUI,jQuery 验证,Modernizr和默认CSS引用。
FilterConfi g.cs:不出所料,这用于注册全局MVC过滤器。唯一的 默认情况下注册的过滤器是HandleErrorAttribute,但这是一个很好的放置位置 其他过滤器注册。
RouteConfi g.cs:保存MVC confi g语句的祖父,Route confi guration。
WebApiConfi g.cs:用于注册Web API路由,以及设置任何其他Web API配置设置。
答案 5 :(得分:0)
所有这些设置都在Global.asax.cs文件的App_Start方法中注册
BundleConfig.cs:
这用于为模板中的CS和JS文件创建和注册包。
FilterConfig.cs- 这用于创建和注册全局MVC过滤器错误过滤器
RouteConfig.cs -
这用于为您的Asp.Net MVC应用程序注册各种路由模式。
WebApiConfig.cs- 这用于注册各种WEB API路由,例如希望使用来自外部提供商(如Facebook,Twitter,Microsoft或Google)的凭据登录,