ASP.NET MVCレッスン1.はじめに

レッスンの目的: Global.asaxおよびWebアプリケーションを起動してWeb要求を処理する動作を学習します。 NugetおよびConnectロギングの調査。



開始する


ASP.NET MVC 4 Webアプリケーション「Lesson1」アプリケーションを作成しましょう(図1)。















アプリケーションを起動しませんが、NuGet拡張機能をすぐにインストールします(まだ実行していない場合)。







NuGetパッケージマネージャーはVisual Studioの拡張機能で、既存のプロジェクトにモジュールを追加して作業を大幅に簡素化できます。 「基本」asp.net mvc4アプリケーションを作成するとき、多くのモジュールが最初にアプリケーション自体に追加されました。 プロジェクトのコンテキストメニューで[NuGetパッケージの管理...]をクリックすると、リストを見つけることができます。











それらについて順番に:





アプリケーションの構成がおおまかにわかったので、起動しましょう。

これを行うには、HomeControllerを作成します。











Indexメソッド(アクション)の場合、ビューを追加し、レイアウトとして〜Views / Shared / _Layout.cshtmlを選択します(マスターページタイプ):











実際に実行できます。

表示されるのは次のとおりです。







コントローラーをHomeと呼ぶべき理由とその仕組みについては、次のレッスンで詳しく説明します。



Global.asax


ここで、Global.asaxファイルに注目しましょう。



public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } }
      
      





MvcApplicationクラスはHttpApplicationを継承し、アプリケーションを初期化するための指示が含まれています。 コードを追加できるイベントがいくつかあります。 それらを考慮してください:





いいね さて、これが実際に何が起こるかを確認するには、NLogモジュールをNuGetに追加してログを追加します。



パッケージマネージャーコンソール


NuGetには、インストール用のコマンドを実行するためのコンソールがあります。モジュールのインストール、アンインストール、検索、およびscaffoldingなどのその他のもの。

インストールされているすべてのモジュールを表示するには、次のように記述します。

 Get-Package
      
      





インストールに使用できるすべてのモジュールを取得するには:

 Get-Package –ListAvailable
      
      





NLogと呼ばれる利用可能なすべてのモジュール

 Get-Package -ListAvailable -Filter NLog
      
      





または

 Get-Package -ListAvailable | where {$_.Id -match "NLog"} ( )
      
      





NLogモジュールをインストールするには、最初にプロジェクトを選択し(ソリューションに複数ある場合)、コマンドを入力する必要があります。

 Install-Package NLog
      
      











ファイルがプロジェクトにコピーされ、アセンブリリンクが追加され、web.configを更新できます。

プロジェクトからモジュールを削除するには、他のモジュールと接続されていないことが必要です。 次のように削除します。



 Uninstall-Package NLog
      
      





Nlog


インストール後、NLogのドキュメント( https://github.com/nlog/nlog/wiki/Tutorial )を使用して、Web.configに追加します

  <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
      
      







 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="logfile" xsi:type="File" fileName="C://file.txt" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logfile" /> </rules> </nlog>
      
      





後で修正します。 コード(Global.asax.cs)に追加します。

  public class MvcApplication : NinjectHttpApplication { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
      
      





そして

 protected void Application_Start() { logger.Info("Application Start"); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } public void Init() { logger.Info("Application Init"); } public void Dispose() { logger.Info("Application Dispose"); } protected void Application_Error() { logger.Info("Application Error"); } protected void Application_End() { logger.Info("Application End"); }
      
      





アプリケーションを実行して終了します(停止)。 ファイルC://file.txtを開きます。 どのイベントが発生したかを確認します。



 2012-09-18 19:18:11.5668|INFO|Lesson1.MvcApplication|Application Start 2012-09-18 19:18:13.7319|INFO|Lesson1.MvcApplication|Application Init 2012-09-18 19:18:14.2709|INFO|Lesson1.MvcApplication|Application Init 2012-09-18 19:18:14.2769|INFO|Lesson1.MvcApplication|Application BeginRequest 2012-09-18 19:18:14.3579|INFO|Lesson1.MvcApplication|Application AuthenticateRequest 2012-09-18 19:18:14.3579|INFO|Lesson1.MvcApplication|Application AuthorizeRequest 2012-09-18 19:18:14.3579|INFO|Lesson1.MvcApplication|Application ResolveRequestCache 2012-09-18 19:18:14.3989|INFO|Lesson1.MvcApplication|Session Start 2012-09-18 19:18:14.3989|INFO|Lesson1.MvcApplication|Application AcquireRequestState 2012-09-18 19:18:14.3989|INFO|Lesson1.MvcApplication|Application PreRequestHandlerExecute 2012-09-18 19:18:15.9580|INFO|Lesson1.MvcApplication|Application PreRequestHandlerExecute 2012-09-18 19:18:15.9580|INFO|Lesson1.MvcApplication|Application ReleaseRequestState 2012-09-18 19:18:15.9580|INFO|Lesson1.MvcApplication|Application UpdateRequestCache 2012-09-18 19:18:15.9580|INFO|Lesson1.MvcApplication|Application EndRequest 2012-09-18 19:18:15.9580|INFO|Lesson1.MvcApplication|Application PreSendRequestHeaders 2012-09-18 19:18:35.6061|INFO|Lesson1.MvcApplication|Session End 2012-09-18 19:18:38.0833|INFO|Lesson1.MvcApplication|Application Dispose 2012-09-18 19:18:38.0833|INFO|Lesson1.MvcApplication|Application End 2012-09-18 19:18:39.1383|INFO|Lesson1.MvcApplication|Application Dispose
      
      





登録はApplication_Startで行われます。



フィルター、バンドル、およびルートの初期化の詳細は、App_Startフォルダーにあります。



Webactivator


WebActivatorは、App_Startを最初に起動する前にコードを実行できるモジュールです。 これは、たとえば、開始前にテストデータベースを作成するために必要になる場合があります。

インストール:



 Install-Package WebActivatorEx
      
      







クラスをApp_Startフォルダーに追加します。



 [assembly: WebActivator.PreApplicationStartMethod(typeof(PreStartApp), "Start")] namespace Lesson1.App_Start { public static class PreStartApp { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); /// <summary> ///        /// </summary> public static void Start() { logger.Info("Application PreStart"); } } }
      
      





ログファイルでは、Application PreStart行がApplication Startの前に実行されていることがわかります。

 2012-09-19 10:29:01.3950|INFO|Lesson1.App_Start.PreStartApp|Application PreStart 2012-09-19 10:29:01.6290|INFO|Lesson1.MvcApplication|Application Start
      
      





トレース(デバッグ)、デバッグ(デバッグ)、情報(情報)、エラー(エラー)の4つのファイルを個別に作成しましょう。 記録場所を定義します。/ 内容/ログ/ [現在の日付]設定を書き換えます:

 <nlog autoReload="true" xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <variable name="logDirectory" value="${basedir}/Content/logs/${shortdate}" /> <targets> <target name="fileLogTrace" xsi:type="File" fileName="${logDirectory}/trace.txt" /> <target name="fileLogDebug" xsi:type="File" fileName="${logDirectory}/debug.txt" /> <target name="fileLogInfo" xsi:type="File" fileName="${logDirectory}/info.txt" /> <target name="fileLogErrors" xsi:type="File" fileName="${logDirectory}/errors.txt" /> </targets> <rules> <logger name="*" level="Trace" writeTo="fileLogTrace" /> <logger name="*" level="Debug" writeTo="fileLogDebug" /> <logger name="*" level="Info" writeTo="fileLogInfo" /> <logger name="*" minlevel="Warn" writeTo="fileLogErrors" /> </rules> </nlog>
      
      







Log2console


NLogには、プログラムウィンドウで直接ログを受信できるクールなプログラムLog2Consoleもあります。







プログラムを実行し、レシーバーを構成します。







Web.configに次のように記述します。



 <target name="TcpOutlet" xsi:type="NLogViewer" address="tcp4://localhost:4505"/>
      
      





address =” tcp4:// ...”を記述する必要があるが、 address =” tcp:// ...”を記述する必要はないという事実に注意を促し ます。



すべてのソースはhttps://bitbucket.org/chernikov/lessonsにあります



All Articles