MVC4のApp_Start()フォルダーの使用について詳しく説明してください。このフォルダーは、実際には以前のバージョンのMVCでは使用できないことがわかります。このフォルダーには5つのファイルがあります。
App_Start
は、ASP.NET MVCの以前のバージョンではGlobal.asax
で実行されていたASP.NET MVC構成をグループ化する別のフォルダーです。
ASP.NET MVCはますます多くの構成要素を導入しており、このフォルダーはこの構成を配置するのに理想的です。たとえば、MVC 5の新しい認証。サードパーティのログインプロバイダーなどの構成も、このフォルダー内(Startup.Auth.cs
内)に配置されます。
App_Start
は、ASP.NET/IISによって認識されない ASP.NET特殊フォルダー ではありません。必要に応じて、フォルダーの名前を変更できます。名前は、App_GlobalResouces
などの単なる規則です。
以下は、各ファイルの情報と参照ポイントです。これらのファイルの使用は非常に簡単です。あなたがもっと理解するのを助けるかもしれないいくつかのオンライン参照を含めました。
AuthConfig
—外部認証プロバイダーを登録します。詳細については、ASP.NET MVC 外部認証プロバイダー を参照してください。
BundleConfig
— CSSとJSを登録して、バンドルおよび縮小できるようにします。 ASP.NET MVC:ガイダンス:バンドルと縮小 も参照してください。
WebApiConfig
— Web API を使用している場合にのみ適用可能。 Web API固有のルート、Web API設定、およびWeb APIサービスを構成するために使用できます。 ASP.NET MVC Web API 2の構成 も参照してください。
FilterConfig
—登録済みグローバルフィルター。これらのフィルターは、すべてのアクションとコントローラーに適用されます。 ASP.NET MVC 3:グローバルアクションフィルター も参照してください
RouteConfig
—すでに情報を見つけました。
App_startフォルダーがMvc4に導入されました。以下のようなさまざまな構成ファイルが含まれています。
App_startはMVCの特別なフォルダーでも、この中のクラスファイルでもありません。これらは、異なるアプリケーション構成(フィルタリング、バンドル、ルーティングなど)を持つ通常のクラスファイルであり、これらの設定はすべてGlobal.asax.csファイルのApplication_Startメソッド内に登録されます。
これは、CSSおよびJSファイルのバンドルを作成および登録するために使用されます。例えばjQuery、jQueryUI、jQuery検証、ModernizrおよびサイトCSS。
バンドルと縮小は、サーバーへのリクエストの数を減らし、リクエストされたアセット(CSSやJavaScriptなど)のサイズを減らすことでリクエストのロード時間を改善する2つの手法です。同じ
例えば2つのバンドルを作成します。 1つはスタイル(css)用、もう1つはスクリプト(javascript)用
を呼び出すことで、それぞれcssとjavascriptのバンドルを作成できます
BundleCollection.csファイル内のBundleCollectionクラスの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:
上記のバンドルは、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); }
_
Minificationは、不要な文字(空白、改行、タブなど)とコメントをJavaScriptファイルとCSSファイルから削除して、サイズを縮小し、Webページの読み込み時間を短縮する技術です。例えば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
}
}
_
フィルターの設定
次の3つのレベルで、独自のカスタムフィルタをアプリケーションに設定できます。
グローバルレベル
Global.asax.csファイルのApplication_Startイベントにフィルターを登録することにより:
_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アプリケーションの実行フローで重要な役割を果たします。ルーティングテーブルを使用して、リクエスト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);
}
_
RouteConfig.csファイルはApp_Startフォルダーの下にあります。 RouteConfigクラスでこのメソッドを実行すると、次のように1つのデフォルト構成ルートが見つかります。行3〜7は、1つのデフォルトルートを設定しています。
_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行目:デフォルトのコントローラーはホーム、デフォルトのアクションはインデックス、IDはオプションです。
これは、Asp.Net MVCなどのさまざまなWEB APIルートの登録、および追加のWEB API構成設定の設定に使用されます。
たとえば、外部認証プロバイダーを登録するために使用されます。ユーザーがFacebook、Twitter、Microsoft、Googleなどの外部プロバイダーからの資格情報でログインできるようにし、それらのプロバイダーの機能の一部をWebアプリケーションに統合する場合。
App_startフォルダーがMvc4に導入されました。次のようなさまざまな構成ファイルが含まれています。
これらの設定はすべて、Global.asax.csファイルのApp_Startメソッド内に登録されます
BundleConfig.cs:
これは、CSおよびJSファイルのバンドルを作成および登録するために使用されます。デフォルトでは、jQuery、jQueryUI、jQuery検証、Modernizer、Site Cssなどのさまざまなバンドルがこのファイルに追加されます。
FilterConfig.cs-
これは、グローバルMVCフィルターエラーフィルター、アクションフィルターなどを作成および登録するために使用されます。デフォルトでは、HandleErrorAttributeフィルターが含まれています。
RouteConfig.cs-
これは、Asp.Net MVCアプリケーションのさまざまなルートパターンを登録するために使用されます。デフォルトでは、デフォルトルートとして名前が付けられた1つのルートがここに登録されます。
WebApiConfig.cs-
これは、Asp.Net MVCなどのさまざまなWEB APIルートを登録するために使用され、追加のWEB API構成設定を設定します。
MVCの以前のバージョンでは、ルーティングを構成するためにglobal.asaxファイルにRegisterRoutes()メソッドがありました。 MVC 4は、モバイルWebアプリケーション、web api(restful httpサービス)を開発するためのテンプレートを組み込みました。そのため、これらすべてのテンプレート駆動開発のルーティングを構成するには、AuthConfig.cs(Authorization)、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でのアクションは不要です)
これらの設定はすべて、Global.asax.csファイルのApp_Startメソッド内に登録されます
BundleConfig.cs:
これは、テンプレートにあるCSおよびJSファイルのバンドルを作成および登録するために使用されます。
FilterConfig.cs-これは、グローバルMVCフィルターエラーフィルターを作成および登録するために使用されます
RouteConfig.cs-
これは、Asp.Net MVCアプリケーションのさまざまなルートパターンを登録するために使用されます。
WebApiConfig.cs-これは、Facebook、Twitter、Microsoft、Googleなどの外部プロバイダーからの資格情報を使用したログインを求めるなど、さまざまなWEB APIルートを登録するために使用されます。
AuthConfi g.cs:OAuthログイン用のサイトを含む、セキュリティ設定の構成に使用されます。
BundleConfi g.cs:バンドリングおよびミニフィケーションシステムで使用されるバンドルを登録するために使用されます。 jQuery、jQueryUI、jQuery検証、Modernizr、デフォルトのCSS参照など、いくつかのバンドルがデフォルトで追加されます。
FilterConfi g.cs:当然のことながら、これはグローバルMVCフィルターの登録に使用されます。デフォルトで登録される唯一のフィルターはHandleErrorAttributeですが、これは他のフィルター登録を置くのに最適な場所です。
RouteConfi g.cs:MVC構成ステートメントの祖父、ルート構成を保持します。
WebApiConfi g.cs:Web APIルートの登録、および追加のWeb API構成設定の設定に使用されます。