рдкрд╛рда рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп: Global.asax рдФрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗрдм рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ред рддрд▓рд╛рд╢ рдПрдирдЧреЗрдЯ рдФрд░ рдХрдиреЗрдХреНрдЯ рд▓реЙрдЧрд┐рдВрдЧред
рд╢реБрд░реБрдЖрдд
рдЖрдЗрдП ASP.NET MVC 4 рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди "рдкрд╛рда 1" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ (рдЪрд┐рддреНрд░ 1):
рд╣рдо рдЖрд╡реЗрджрди рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ) NuGet рдПрдХреНрд╕рдЯреЗрдВрд╢рди:
NuGet Package Manager рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред тАЬBasicтАЭ asp.net mvc4 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдХрдИ рдореЙрдбреНрдпреВрд▓ рд╢реБрд░реВ рдореЗрдВ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреБрдбрд╝ рдЧрдП рдереЗред рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд NuGet рд╕рдВрдХреБрд▓ ... рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЙрдирдХреА рд╕реВрдЪреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдХреНрд░рдо рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
- рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
- jQuery (+ jQuery UI, jQuery Validation) рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ (рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)ред
- Json.NET - json data format рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВред
- рдиреЙрдХрдЖрдЙрдЯрдЬ - рдореЙрдбрд▓ рд╡реНрдпреВ рд╡реНрдпреВрдореЙрдбрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реАред ( http://knockoutjs.com/ )
- Microsoft.Net рдлреНрд░реЗрдорд╡рд░реНрдХ 4 Http рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА - HttpContext рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред
- Microsoft ASP.NET MVC 4 - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, MVC рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХреА рдХрдХреНрд╖рд╛рдПрдВ (рдЕрдзреНрдпрдпрди рдХрд╛ рд╡рд┐рд╖рдп рдХреНрдпрд╛ рд╣реИ)
- Microsoft ASP.NET рд░реЗрдЬрд░ 2 рдПрдХ рджреГрд╢реНрдп рдЗрдВрдЬрди рд╣реИред ASPX рдФрд░ рд╕реНрдкрд╛рд░реНрдХ рднреА рд╣реИрдВ - рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ
- Microsoft ASP.NET рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ (рд▓реЛрдХрд▓рдбреАрдмреА рдХреЗ рд▓рд┐рдП Microsoft ASP.NET рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реНрд╕) - рд╕рднреА SQL рд╕рд░реНрд╡рд░ 2005 (рдФрд░ рдмрд╛рдж рдореЗрдВ) рдФрд░ SQL Azure рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- Microsoft ASP.NET рд╡реЗрдм API (Microsoft ASP.NET рд╡реЗрдм API рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝, Microsoft ASP.NET рд╡реЗрдм API рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝, Microsoft ASP.NET рд╡реЗрдм рдПрдкреАрдЖрдИ рд╡реЗрдм рд╣реЛрд╕реНрдЯ) - XML тАЛтАЛрдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ, JSON рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
- Microsoft ASP.NET рд╡реЗрдм рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИ, js рдХреЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ
- Microsoft ASP.NET рд╡реЗрдмрдкреЗрдЬ 2 - рджреГрд╢реНрдп рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ
- Microsoft jQuery рдХреЗ рд╡рд┐рдиреАрдд Ajax (Microsoft jQuery рдХреЗ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрдХрд░рдг) - jQuery рдкреБрд╕реНрддрдХрд╛рд▓рдп aj / рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- Microsoft.Web.Infrastructure - рдЖрдкрдХреЛ рд░рди рд╕рдордп рдореЗрдВ HTTP рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
- Modernizr - js рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ html5 рдФрд░ css3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
- WebGrease - рдЖрдкрдХреЛ html, css, js рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ HomeController рдмрдирд╛рдПрдВ:
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╡рд┐рдзрд┐ (рдХреНрд░рд┐рдпрд╛) рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп рдЬреЛрдбрд╝реЗрдВ рдФрд░ ~ рджреГрд╢реНрдп / рд╕рд╛рдЭрд╛ / _Layout.cshtml рд▓реЗрдЖрдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдиреЗрдВ (рдорд╛рд╕реНрдЯрд░ рдкреГрд╖реНрда рдХреЗ рдкреНрд░рдХрд╛рд░):
рджрд░рдЕрд╕рд▓, рд╣рдо рджреМрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рд╕рдм рджреЗрдЦреЗрдВрдЧреЗ:
рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╣реЛрдо рдХреНрдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рдареЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗред
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 рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рдХрдИ рдФрд░ рдШрдЯрдирд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЖрдк рдХреЛрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЗрдирд┐рдЯ () - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдкрд╣рд▓реА рдХреЙрд▓ рдкрд░ рд╣реИред рдЗрд╕реЗ HttpApplication рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдбрд┐рд╕реНрдкреЛрдЬрд╝ () - HttpApplication рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рдирд╛рд╢ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рд╕реНрдерд╛рди рд╣реИред
- Application_Error - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдЕрдирд╣реЗрд▓реНрдб рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИред
- Application_Start - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкрд╣рд▓реА HttpApplication рдЖрд╡реГрддреНрддрд┐ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ HttpApplication рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реИрдВред
- Application_End - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм HttpApplication рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рдкрд╣рд▓реЗ рдирд┐рд░реНрдорд┐рдд рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдШрдЯрдирд╛ рдЖрд╡реЗрджрди рдХреЗ рдкреВрд░реЗ рдЬреАрд╡рдирдХрд╛рд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реЛрддреА рд╣реИред
- Application_BeginRequest - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрд╡реЗрджрди рдПрдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА URL рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рддреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдпрд╣ рдШрдЯрдирд╛ рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИред
- Application_EndRequest - рдЕрдВрддрд┐рдо рдШрдЯрдирд╛ рдЬреЛ рдЖрд╡реЗрджрди рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИред
- Application_PreRequestHandlerExecute - ASP.NET рдкреГрд╖реНрда рд╣реИрдВрдбрд▓рд░ рдпрд╛ рд╡реЗрдм рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред
- Application_PostRequestHandlerExecute - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм ASP.NET рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
- Applcation_PreSendRequestHeaders - ASP.NET рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдХреЛ HTTP рд╣реЗрдбрд░ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред
- Application_PreSendContent - ASP.NET рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдХреЛ HTTP рдХрдВрдЯреЗрдВрдЯ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред
- Application_AcquireRequestState - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм ASP.NET рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (рд╕рддреНрд░ рд╕реНрдерд┐рддрд┐) рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
- Application_ReleaseRequestState - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм ASP.NET рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред
- Application_ResolveRequestCache - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм ASP.NET рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреИрд╢ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реИрдВрдбрд▓рд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рдХреИрд╢ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- Application_UpdateRequestCache - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм ASP.NET рд╣реИрдВрдбрд▓рд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреИрд╢ рдореЙрдбреНрдпреВрд▓ рдмрд╛рдж рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдмрдЪрд╛ рд╕рдХреЗред
- Application_AuthenticateRequest - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЙрдбреНрдпреВрд▓ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдорд╛рдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкрд╣рд▓реЗ рд╣реА рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВред
- Application_AuthorizeRequest - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдореЙрдбреНрдпреВрд▓ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИред
- Session_Start - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред
- Session_End - рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рд╡рд╣ рд╕рд╛рдЗрдЯ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
рд╕рдм рдареАрдХ рд╣реИред рдЕрдм, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ, рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдПрдирдПрд▓рдЧреЗрдЯ рдореЗрдВ NLog рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдХрд░ рдРрд╕рд╛ рдХрд░реЗрдВред
рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрдВрд╕реЛрд▓
NuGet рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ, рдЬреИрд╕реЗ рдХрд┐
рдордЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░реЗрдВред
рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд┐рдЦреЗрдВ:
Get-Package
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
Get-Package тАУListAvailable
рдПрдирдПрд▓рдУрдЬреА рдирд╛рдордХ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП
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();
рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реАрд╕реНрдЯрд╛рд░реНрдЯ рд▓рд╛рдЗрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ:
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
рдЖрдЗрдП рдЯреНрд░реЗрд╕ (рдбреАрдмрдЧрд┐рдВрдЧ), рдбреАрдмрдЧ (рдбреАрдмрдЧрд┐рдВрдЧ), рд╕реВрдЪрдирд╛ (рд╕реВрдЪрдирд╛), рддреНрд░реБрдЯрд┐ (рддреНрд░реБрдЯрд┐рдпрд╛рдВ) рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдЪрд╛рд░ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВред рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
/ рд╕рд╛рдордЧреНрд░реА / рд▓реЙрдЧ / / [рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐] рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ:
<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"/>
рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐
рдкрддрд╛ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
= "tcp4: // ..." , рд▓реЗрдХрд┐рди
рдкрддрд╛ рдирд╣реАрдВ
= "tcp: // ..."рд╕рднреА рд╕реНрд░реЛрдд
https://bitbucket.org/chernikov/lessons рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ