Не могли бы вы подробно объяснить, как используется папка App_Start() в MVC4? Я вижу, что эта папка на самом деле недоступна в предыдущих версиях MVC. В этой папке 5 файлов.
Ответ 1
App_Start
- это еще одна папка, объединяющая конфигурацию ASP.NET MVC, которая в предыдущих версиях ASP.NET MVC была выполнена в Global.asax
.
ASP.NET MVC вводит все больше элементов конфигурации, и эта папка идеально подходит для размещения этой конфигурации. Например, MVC 5 new auth. конфигурации, например, для сторонних поставщиков регистрации, также помещаются в эту папку (в Startup.Auth.cs
).
App_Start
не является специальной папкой ASP.NET, распознанной ASP.NET/IIS. Вы можете переименовать папку, если хотите. Это просто соглашение, например App_GlobalResouces
и т.д.
Обновление:
Ниже приведены некоторые сведения и контрольные точки для каждого файла. Использование этих файлов довольно просто. Я включил несколько онлайн-ссылок, которые могли бы помочь вам понять больше.
Ответ 2
Папка App_start была введена в Mvc4. Он содержит различные файлы конфигурации, такие как:
- BundleConnfig.cs
- FilterConfig.cs
- RouteConfig.cs
- WebApiConfig.cs
- AuthConfig.cs
App_start - это не специальная папка в MVC и файлы классов внутри нее, это просто файлы нормального класса с различным приложением
конфигурации (фильтрация, группировка, маршрутизация и т.д.), и все эти настройки регистрируются в методе Application_Start файла Global.asax.cs.
BundleConfig.cs:
Используется для создания и регистрации пакетов для CSS и JS файлов. для например. jQuery, jQueryUI, проверка jQuery, модернизация и CSS сайта.
Объединение и минимизация - это два метода для увеличения времени загрузки запроса на уменьшая количество запросов на сервер и уменьшая размер (например, CSS и JavaScript). Microsoft предоставляет сборку Microsoft.Web.Optimization для тех же
например.
Позволяет создать два пакета. один для стиля (css) и другой для script (javascript)
Вы можете создать пакет для css и javascript соответственно, позвонив Метод Add() класса BundleCollection в файле BundleConfig.cs.
ШАГ 1:
Создание набора стилей
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.min.css",
"~/Content/mystyle.min.css"));
Создание Script Bundle
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery-1.7.1.min.js",
"~/Scripts/jquery.validate.min.js"));
ШАГ 2:
Выше расслоения определены в классе 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:
Регистрация пакета
Все пакеты зарегистрированы в событии Application_Start для Global.asax:
protected void Application_Start()
{
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Minification - это метод удаления ненужных символов (например,
пробел, новая строка, вкладка) и комментарии от JavaScript и CSS
файлы для уменьшения размера, в свою очередь, увеличивают время загрузки веб-страницы. для
например. jquery-1.7.1.min.js - это мини файл js для jquery-1.7.1,
в основном используется для производственной среды, для non-prod вы можете лучше использовать не-
minified js, чтобы иметь лучшую читаемость.
например,
Функция Jquery в несжатом js может выглядеть примерно так:
( 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)
}
FilterConfig.cs:
Используется для создания и регистрации глобального фильтра MVC:
например.
- Фильтры аутентификации (Выполнено первым)
- Фильтры авторизации
- Фильтры действий
- Фильтры результатов
- Фильтры исключений (Exected Last)
Примечание. Как упоминалось выше, фильтры выполняются в порядке.
например. Фильтры аутентификации, представленные с помощью 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();
}
}
RouteConfig.cs:
Это используется для регистрации различных шаблонов маршрутов для вашего Asp.Net MVC
выражение. Маршрутизация играет важную роль в приложении ASP.NET MVC потока выполнения, он сопоставляет URL-адрес запроса с конкретным действием контроллера, используя Таблица маршрутизации. Мы можем определить правила маршрутизации для движка, чтобы он мог отображать > входящие URL-адреса для соответствующего контроллера. Маршрутизатор использует правила маршрутизации которые определены в файле Global.asax, чтобы проанализировать URL-адрес и узнать путь соответствующего контроллера. Мы можем найти следующий фрагмент кодa > в методе Application_Start() файла Global.asax.
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Мы можем найти файл RouteConfig.cs в папке App_Start. Если мы следуем этот метод в классе 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: контроллер, действие, за которым следует id (если есть). Строка 6: контроллер по умолчанию будет Домой, действие по умолчанию будет индексом, а идентификатор - необязательным.
WebApiConfig.cs:
Это используется для регистрации различных маршрутов API-интерфейсов WEB, таких как Asp.Net MVC, а также для настройки дополнительных конфигураций WEB API.
AuthConfig.cs:
Используется для регистрации внешних поставщиков проверки подлинности
например. если вы хотите, чтобы пользователи регистрировались с учетными данными от внешнего поставщика, таких как Facebook, Twitter, Microsoft или Google, а затем интегрировали некоторые функции этих поставщиков в ваше веб-приложение.
Ответ 3
Папка App_start была введена в Mvc4. Он содержит различные файлы конфигураций, например:
- BundleConnfig.cs,
- FilterConfig.cs,
- RouteConfig.cs,
- WebApiConfig.cs
для вашего приложения. Все эти параметры зарегистрированы в модуле App_Start файла Global.asax.cs.
BundleConfig.cs:
Это используется для создания и регистрации пакетов для CS и JS файлов. По умолчанию в этот файл добавляются различные пакеты, включая jQuery, jQueryUI, проверку jQuery, модернизатор и сайт Css.
FilterConfig.cs -
Это используется для создания и регистрации глобального фильтра ошибок фильтра MVC, фильтра действий и т.д. По умолчанию он содержит фильтр HandleErrorAttribute.
RouteConfig.cs -
Используется для регистрации различных шаблонов маршрутов для вашего приложения ASP.NET MVC. По умолчанию один маршрут зарегистрирован здесь, названный как маршрут по умолчанию.
WebApiConfig.cs -
Это используется для регистрации различных маршрутов API-интерфейсов WEB, таких как Asp.Net MVC, а также для установки дополнительных настроек конфигурации WEB API.