MS_HttpApplicationModuleHandler - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ãïŒASP.NETïŒ
HttpApplicationïŒGlobal.asaxïŒã
HttpModuleãHttpHandlerçã«ã€ããŠã
è£è¶³ïŒäžè ã®é¢ä¿ãå ã«ïŒ: ååã䌌ãŠããŠæ··åãããããã®ã§ã
圹å²ã®éããå ã«æŽçããŠãããããªã¯ãšã¹ãã®æµãã ãã©ãŠã¶ â [ HttpApplication ] ⊠ã¢ããªå šäœã®å ±éåŠçïŒGlobal.asaxïŒ â [ HttpModule ] [ HttpModule ] [ HttpModule ] ⊠â å šãªã¯ãšã¹ããéãããã£ã«ã¿ãŒããäœåã§ã䞊ã¹ããã â [ HttpHandler ] ⊠å®éã«å¿çãäœããçµç¹ãã1 ã€ã ã ïŒ.aspx â PageHandlerFactoryã.ashx â èªäœãã³ãã©ãŒ âŠïŒ â [ HttpModule ]ïŒåŸåŠçïŒâŠ â ãã©ãŠã¶
åæ° åœ¹å² å¯Ÿå¿ãã ASP.NET Core HttpApplication 1ïŒããŒã«ïŒ ã¢ããªå šäœã®ã€ãã³ã Program.cs/ ããã«ãŠã§ã¢HttpModule äœåã§ã 暪æçãªåŠçïŒèªèšŒããã°ãæžãæãïŒ ããã«ãŠã§ã¢ HttpHandler 1 ã€ã ã å¿çã®çæ ãšã³ããã€ã³ãïŒMapãïŒ HttpModule ïŒ ããã«ãŠã§ã¢ãHttpHandler ïŒ ãšã³ããã€ã³ã
ãšãã察å¿ã§æãããšãASP.NET Coreãžã®ç§»è¡ ã®
èŠéããè¯ããªãã
-
å ±éã®åŠçãå®çŸ©ããã
- ã¡ãœãã
- ããããã£
- ã€ãã³ã
-
Global.asax ãã¡ã€ã«ã§å®çŸ©ããã
èŠæ±ãååãåå ããŸãã¯å€æŽã§ããã
-
HttpHandlerã®å®è¡åãšå®è¡åŸã«åŒã³åºãããã
-
ã€ã³ã¿ãŒãã§ã€ã¹ IHttpModule ãå®è£ ããã
ISAPIæ¡åŒµæ©èœã«é¡äŒŒããæ©èœã
-
åã ã®ãšã³ããã€ã³ãèŠæ±ãåŠçããããã«äœ¿çšããã
-
èŠæ±ãåŠçããããã«äœ¿çšããããã³ãã©ãŒã¯ 1 ã€ã®ã¿ã
-
ã€ã³ã¿ãŒãã§ã€ã¹ IHttpHandler ãå®è£ ããã
-
ã¢ããªå ã® HTTP URL ãŸã㯠URL æ¡åŒµæ©èœã®ã°ã«ãŒããåŠçã§ããã
-
ã€ãã³ãçºçé åºã«èå³ãè¡ããã¡ã ãã
ã©ã€ããµã€ã¯ã«ã«æãã¬èœãšã穎ãããã®ã§èŠæ³šæã -
ãŸããHttpModuleãHttpHandlerã§åŠçå¯èœãªã
HTTP ã®ãªã¯ãšã¹ãã»ã¬ã¹ãã³ã¹ã®æžãæãã«ã€ããŠããŸãšããã
-
åæå®è¡æ°ã«åãããŠã€ã³ã¹ã¿ã³ã¹åãããã
-
ãªã¯ãšã¹ãïŒã¬ã¹ãã³ã¹éã¯å°æããïŒã¡ã³ãã¯ã¹ã¬ããã»ãŒãïŒã
-
ã€ã³ã¹ã¿ã³ã¹åããããªããžã§ã¯ãã¯è€æ°ãŠãŒã¶éã§äœ¿ããŸããããã
-
ãªããHttpApplicationãšHttpModuleã¯
ã¢ã¯ã»ã¹ã§ããã€ãã³ããç°ãªãã-
HttpApplication
- ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ã€ãã³ã
- ãªã¯ãšã¹ãã¬ãã«ã®ã€ãã³ã
-
HttpModule
- ãªã¯ãšã¹ãã¬ãã«ã®ã€ãã³ã
-
è£è¶³ïŒåæãèšããæãã¬èœãšã穎ãã®äžèº«ïŒ: ãã® 3 è¡ã
æ¬ããŒãžã§æãéèŠãªèšè¿°ã§ãããã誀解ã HttpApplication / HttpModule ã¯ããªã¯ãšã¹ãããšã« new ãããã â ã€ã³ã¹ã¿ã³ã¹å€æ°ã«ç¶æ ãæã£ãŠãã ãå®éã ããŒã«ïŒã€ã³ã¹ã¿ã³ã¹ ããŒã«ïŒããåãåºããŠäœ¿ãåããã ã»1 ãªã¯ãšã¹ãã®é㯠1 ã¹ã¬ãããå°æããïŒããã¯å®å šïŒ ã»ãããããªã¯ãšã¹ããçµãããšããŒã«ã«æ»ã ã»æ¬¡ã®ãªã¯ãšã¹ãã§ãå¥ã®ãŠãŒã¶ãŒãã«è²žãåºããã â åã®ãŠãŒã¶ãŒã®å€ãæ®ã£ãŠãããšæ å ±æŒæŽ©public class MyModule : IHttpModule { private string _userId; // â å±éºã䜿ãåããã public void Init(HttpApplication app) { app.AuthenticateRequest += (s, e) => { _userId = GetUser(); }; app.EndRequest += (s, e) => { Log(_userId); }; // â åäžãªã¯ãšã¹ãå ãªãåããã // ã¯ãªã¢ãå¿ãããšæ¬¡ã®ãªã¯ãšã¹ãã«æ®ã } }ãªã¯ãšã¹ãåäœã®ç¶æ ã¯
HttpContext.Itemsã«æã€ã®ãå®ç³ã§ãããHttpContext.Current.Items["UserId"] = userId; // ãªã¯ãšã¹ãçµäºã§ç Žæ£ããã
Initã¯ååã®ã¿åŒã°ããïŒåŸè¿°ã®â å°ïŒããã
Initã§ç¢ºä¿ãããã®ã¯å šãªã¯ãšã¹ãã§å ±æãããç¹ã«ã泚æãããASP.NET Core ã®ããã«ãŠã§ã¢ã§ãåãçœ ããã
ïŒããã«ãŠã§ã¢ã®ã€ã³ã¹ã¿ã³ã¹ã¯ã¢ããªèµ·åæã« 1 ã€ã ãäœãããïŒãpublic class MyMiddleware { private readonly RequestDelegate _next; // ããã«ãªã¯ãšã¹ãåºæã®ç¶æ ãæã£ãŠã¯ãããªãïŒSingleton çžåœïŒ public async Task InvokeAsync(HttpContext ctx, IScopedService svc) { // â Scoped ã¯åŒæ°ã§åãåã await _next(ctx); } }DI ã® Captive Dependency ãšåæ ¹ã®åé¡ã§ããã
- ãªã¯ãšã¹ãã®éœåºŠãIHttpHandlerFactory ã«ãã£ãŠã
HttpHandlerãã€ã³ã¹ã¿ã³ã¹åãããã -
<httpHandlers>ã®å®çŸ©ã«åŸã£ãŠãæ¡åŒµåã GET,POST ãªã©ã«å¿ããŠ
é©åãªHttpHandlerãã€ã³ã¹ã¿ã³ã¹åãããã
è£è¶³ïŒ
IsReusableã«æ³šæïŒ:IHttpHandlerã«ã¯
IsReusableããããã£ãããã
trueã«ãããš HttpModule ãšåæ§ã«äœ¿ãåããããpublic class MyHandler : IHttpHandler { public bool IsReusable => false; // â ç¶æ ãæã€ãªã false public void ProcessRequest(HttpContext context) { ... } }ç¶æ ãæããªããªã
trueïŒã€ã³ã¹ã¿ã³ã¹çæãçããïŒã
æã€ãªãfalseããšãã倿ã«ãªãã
è¿·ã£ããfalseã«ããŠããæ¹ãå®å šã§ããã
â ã¯ååã®ã¿ã
- Global.Application_Start â
- IHTTPModule
- Constructor â
- IHTTPModule.Init â
-
BeginRequest
- Global.BeginRequest
- IHTTPModule.BeginRequest
- Global.Application_BeginRequest
-
Global.DefaultAuthentication
-
AuthenticateRequest
- Global.AuthenticateRequest
- IHTTPModule.AuthenticateRequest
- Global.Application_AuthenticateRequest
-
PostAuthenticateRequest
- Global.PostAuthenticateRequest
- IHTTPModule.PostAuthenticateRequest
-
AuthorizeRequest
- Global.AuthorizeRequest
- IHTTPModule.AuthorizeRequest
-
PostAuthorizeRequest
- Global.PostAuthorizeRequest
- IHTTPModule.PostAuthorizeRequest
-
ResolveRequestCache
- Global.ResolveRequestCache
- IHTTPModule.ResolveRequestCache
-
PostResolveRequestCache
- Global.PostResolveRequestCache
- IHTTPModule.PostResolveRequestCache
-
Page.Constructor
-
PostMapRequestHandler
- Global.PostMapRequestHandler
- IHTTPModule.PostMapRequestHandler
-
Global.Session_Start â
-
AcquireRequestState
- Global.AcquireRequestState
- IHTTPModule.AcquireRequestState
-
PostAcquireRequestState
- Global.PostAcquireRequestState
- IHTTPModule.PostAcquireRequestState
-
PreRequestHandlerExecute
- Global.PreRequestHandlerExecute
- IHTTPModule.PreRequestHandlerExecute
-
Page.PreInit
-
MasterPage.Constructor
-
Init
- MasterPage.ContentPlaceHolder
- MasterPage
- Page
-
Page
- InitComplete
- PreLoad
-
Load
- Page
- MasterPage
- MasterPage.ContentPlaceHolder
-
Page
- Page.LoadComplete
-
PreRender
- Page
- MasterPage
- MasterPage.ContentPlaceHolder
-
Page
- PreRenderComplete
- SaveStateComplete
-
Unload
- MasterPage.ContentPlaceHolder
- MasterPage
- Page
è£è¶³ïŒããŒãžå ã®é åºã«ã€ããŠïŒ: ãã® 2 ç¯ã¯
ASP.NET Web Formsã®ã€ãã³ãçºçé ã®å 容ãšå¯Ÿå¿ããã
PageHandlerFactoryãçæããPageïŒïŒ HttpHandler ã®äžçš®ïŒã®
å éšã§èµ·ããŠããããšããããã«å±éãããŠããããã¹ã¿ãŒ ããŒãžãšã®é åºãé転ããŠããç¹ãå®åäžã®æ³šæç¹ã
Init : ContentPlaceHolder â MasterPage â Page ïŒå åŽããå€åŽãžïŒ Load : Page â MasterPage â ContentPlaceHolder ïŒå€åŽããå åŽãžïŒ Unload : ContentPlaceHolder â MasterPage â Page ïŒå åŽããå€åŽãžïŒ
Initã®æç¹ã§ã¯ãŸãPageã®åæåãçµãã£ãŠããªãããã
ãã¹ã¿ãŒ ããŒãžåŽããPageã®ããããã£ãåç §ãããš
æªèšå®ã§ããããšããäºæ ãèµ·ããã
-
PostRequestHandlerExecute
- Global.PostRequestHandlerExecute
- IHTTPModule.PostRequestHandlerExecute
-
ReleaseRequestState
- Global.ReleaseRequestState
- IHTTPModule.ReleaseRequestState
-
PostReleaseRequestState
- Global.PostReleaseRequestState
- IHTTPModule.PostReleaseRequestState
-
UpdateRequestCache
- Global.UpdateRequestCache
- IHTTPModule.UpdateRequestCache
-
PostUpdateRequestCache
- Global.PostUpdateRequestCache
- IHTTPModule.PostUpdateRequestCache
-
EndRequest
- Global.EndRequest
- IHTTPModule.EndRequest
-
PreSendRequestHeaders
- Global.PreSendRequestHeaders
- IHTTPModule.PreSendRequestHeaders
-
PreSendRequestContent
- Global.PreSendRequestContent
- IHTTPModule.PreSendRequestContent
- Global.Session_End â
- IHTTPModule.Dispose â
- Global.Application_End â
è£è¶³ïŒ
Session_Endã¯åœãŠã«ã§ããªãïŒ:Session_Endã¯
InProcã¢ãŒãã®ãšãããçºç«ããªãã
ã»ãã·ã§ã³ ã¢ãŒã Session_EndInProc çºç«ããïŒãã ãä¿èšŒã¯ãããªãïŒ StateServer çºç«ããªã SQLServer çºç«ããªã Custom çºç«ããªã ããã« InProc ã§ãã
- ã¢ããªã±ãŒã·ã§ã³ ããŒã«ã®ãªãµã€ã¯ã«ã§ã¯çºç«ããªã
ïŒASP.NET config ã®periodicRestartïŒ- ããã»ã¹ãèœã¡ãã°åœç¶çºç«ããªã
ããã°ã¢ãŠãæã®åŸåŠçãã
Session_Endã«æžãã®ã¯å±éºã§ããã
æç€ºçãªãã°ã¢ãŠãåŠçãããããã«ããæéåãåŠçã§æ ä¿ããã
| # | ã€ãã³ã | 説æ |
|---|---|---|
| 1 | BeginRequest | ãªã¯ãšã¹ããåä¿¡ããŠæåã«çºç |
| 2 | AuthenticateRequest | ASP.NET ããŠãŒã¶ã®èªèšŒåŠçã®æºåãå®äºãããšãã«çºç |
| 3 | PostAuthenticateRequest | Post |
| 4 | AuthorizeRequest | æš©éã®æ¿èªåŠçã®æºåãå®äºãããšãã«çºç |
| 5 | PostAuthorizeRequest | Post |
| 6 | ResolveRequestCache | ãªã¯ãšã¹ãã«å¯ŸããŠãã£ãã·ã¥ããã¬ã¹ãã³ã¹ãçæããã®ã ã¬ã¹ãã³ã¹ãïŒããçæããã®ããæ±ºå®ãã |
| 7 | PostResolveRequestCache | Post |
| 8 | PostMapRequestHandler | çŸåšã®èŠæ±ãé©åãªã€ãã³ã ãã³ãã©ã«ããããããšçºç |
| 9 | AcquireRequestState | ã»ãã·ã§ã³å€æ°ã®æºååŠç |
| 10 | PostAcquireRequestState | Post |
| 11 | PreRequestHandlerExecute | åãã³ãã©å®è¡çŽåã«çºç |
| 12 | PostRequestHandlerExecute | åãã³ãã©å®è¡çŽåŸã«çºç |
| 13 | ReleaseRequestState | ã»ãã·ã§ã³å€æ°ãªã©ã®å€ãæŽæ°ã»ä¿åãã |
| 14 | PostReleaseRequestState | Post |
| 15 | UpdateRequestCache | ãªã¯ãšã¹ããã£ãã·ã¥ã®æŽæ°åŠçãè¡ã |
| 16 | PostUpdateRequestCache | Post |
| 17 | EndRequest | ã¯ã©ã€ã¢ã³ãã®ãã©ãŠã¶ãžããŒã¿ãéä¿¡ããçŽåã«çºç |
| 18 | PreSendRequestHeaders | HTTP ããããŒãã¯ã©ã€ã¢ã³ãã«éä¿¡ããçŽåã«çºç |
| 19 | PreSendRequestContent | ã³ã³ãã³ããã¯ã©ã€ã¢ã³ãã«éä¿¡ããçŽåã«çºç |
ç§»è¡ã¡ã¢ïŒè¡šèšïŒ: åæã®ãReleaserequestStateãã¯
ReleaseRequestStateã®è¡šèšæºããšå€æãçµ±äžããã
è£è¶³ïŒã©ã®ã€ãã³ãã«æžãã¹ããïŒ: å®åã§ãã䜿ããã®ãæŽçããŠããã
ããããããš ã€ãã³ã çç± URL ã®æžãæã BeginRequestãã³ãã©ãŒã決ãŸãå èªèšŒïŒèªåïŒ AuthenticateRequestUserãå·®ãæ¿ããããèªå¯ïŒèªåïŒ AuthorizeRequestèªèšŒæžã¿ã®åæã§å€å® ã»ãã·ã§ã³ã䜿ã AcquireRequestState以éããããå㯠Sessionã nullã¬ã¹ãã³ã¹æ¬æã®å å·¥ BeginRequestïŒResponse.Filterãèšå®ïŒããããŒã®è¿œå ã»åé€ PreSendRequestHeaderséä¿¡çŽå ãã°åºå EndRequestç¶æ ã確å®ããŠãã ã
BeginRequestã§Sessionãè§Šã£ãã null ã ã£ãããšããã®ã
é »åºã®ã€ãŸããã§ãAcquireRequestStateããåã«ã»ãã·ã§ã³ã¯ååšããªã
ããšãåå ã§ããã
- ãªã©ã€ã â URL ã®æžãæãã¯HttpHandlerã§ãå¯èœã®ããã ãã
- ãã®ä»ã®æžãæãåŠçã¯ãèŠæ±ãã€ãã©ã€ã³ã«
ã¢ãžã¥ãŒã«ãããã©ã°ã€ã³ãã§ããHttpModuleã䜿ãããšãå€ãæš¡æ§ã
URL ã®æžãæãã¯ã
- HttpHandlerãã
- èŠæ±ãã€ãã©ã€ã³äžã® Application_BeginRequest ãã³ãã©ã§
ïŒHttpApplicationãHttpModuleïŒ
è¡ãã
- åè
- URLæžãæã(Rewriting)ãè¡ã - Netplanetes
http://www.pine4.net/Memo/Article/Archives/11
- URLæžãæã(Rewriting)ãè¡ã - Netplanetes
è£è¶³ïŒçŸåšã¯ IIS URL Rewrite ã第äžåè£ïŒ: èªåã§
HttpModuleãæžããããIIS ã® URL Rewrite ã¢ãžã¥ãŒã«ãäœ¿ãæ¹ã
ç°¡åã§é«éã§ããïŒãã€ãã£ã ã¢ãžã¥ãŒã«ã§ããããŒãžã ã³ãŒããéããªãïŒã<system.webServer> <rewrite> <rules> <rule name="Redirect to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions><add input="{HTTPS}" pattern="off" /></conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer>**
RewriteïŒå éšæžãæãïŒãšRedirectïŒ302/301 ãè¿ãïŒ**ã¯
å¥ç©ã§ããç¹ã«æ³šæãããASP.NET Core ã§ã¯
app.UseRewriter()
ïŒMicrosoft.AspNetCore.RewriteïŒã察å¿ãããapp.UseRewriter(new RewriteOptions() .AddRedirectToHttps() .AddRewrite(@"^old/(.*)", "new/$1", skipRemainingRules: true));
ResponseBody ã®æžãæãã¯ãHttpModuleã§ Response.Filter ã«
ãã³ã¬ãŒãããã ResponseStream ãèšå®ããããšã§è¡ã
ïŒHttpApplicationãHttpModuleïŒã
- åè
- HttpRequestã®ãã©ã¡ãŒã¿ã«å°çް工ããããæã«ã©ãããã(ã»Ïã»)ïŒ -ããâããæ¥èš
http://d.hatena.ne.jp/machi_pon/20091203/1259842545
- HttpRequestã®ãã©ã¡ãŒã¿ã«å°çް工ããããæã«ã©ãããã(ã»Ïã»)ïŒ -ããâããæ¥èš
è£è¶³ïŒASP.NET Core ã§ã®å¯Ÿå¿ïŒ:
Response.Filterã«çžåœããã®ã¯
HttpResponse.Bodyã®å·®ãæ¿ãã§ãããapp.Use(async (ctx, next) => { var original = ctx.Response.Body; using var buffer = new MemoryStream(); ctx.Response.Body = buffer; await next(); buffer.Seek(0, SeekOrigin.Begin); var text = await new StreamReader(buffer).ReadToEndAsync(); text = text.Replace("foo", "bar"); // å å·¥ ctx.Response.Body = original; await ctx.Response.WriteAsync(text); });ãã ããæ¬æãäžžããšãããã¡ãªã³ã°ããããã
ã¡ã¢ãªäœ¿çšéãšã¹ããªãŒãã³ã°æ§ãç ç²ã«ãªãã
æ¬åœã«å¿ èŠãïŒããã³ãåŽã CDN ã§åŠçã§ããªããïŒã
å ã«æ€èšããã®ã劥åœã§ããã
ResponseHeader ã®æžãæãã¯ã
èŠæ±ãã€ãã©ã€ã³äžã® PreSendRequestHeaders ãã³ãã©ã§è¡ã
ïŒHttpApplicationãHttpModuleïŒã
- åè
- IIS7 ã®æ©èœãæ¡åŒµããŠã¿ã-ã¬ã¹ãã³ã¹ããããŒå
ã®ãµãŒããŒåã®æ¹ãã â monoe's blog
https://blogs.msdn.microsoft.com/osamum/2010/04/05/iis7-2/ - IIS 7/7.5 ã§äžèŠãªHTTPã¬ã¹ãã³ã¹ããããŒãåé€ Â« Fukui Labs
http://blog.progfast.jp/labs/index.php/arts/iis-7-httpresponseheader/
- IIS7 ã®æ©èœãæ¡åŒµããŠã¿ã-ã¬ã¹ãã³ã¹ããããŒå
ã®ãµãŒããŒåã®æ¹ãã â monoe's blog
è£è¶³ïŒäžèŠãªããããŒã®åé€ã¯
web.configã§ã§ããïŒ: åèèšäºã
æ±ã£ãŠããããµãŒããŒæ å ±ãé ããç®çãªãã
ã³ãŒããæžããã«web.configã§å¯ŸåŠã§ããã<system.web> <httpRuntime enableVersionHeader="false" /> <!-- X-AspNet-Version --> </system.web> <system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> <!-- ã»ãã¥ãªã㣠ããããŒã®è¿œå ãããã§ --> <add name="X-Content-Type-Options" value="nosniff" /> <add name="Strict-Transport-Security" value="max-age=31536000" /> </customHeaders> </httpProtocol> <security> <requestFiltering removeServerHeader="true" /> <!-- ServerïŒIIS 10+ïŒ --> </security> </system.webServer>ASP.NET Core ã§ã¯ ããã«ãŠã§ã¢ã§è¿œå ããã®ãçŽ çŽã§ããã
app.Use(async (ctx, next) => { ctx.Response.Headers["X-Content-Type-Options"] = "nosniff"; await next(); });
PreSendRequestHeaders㯠ASP.NET Core ã«ã¯ç¡ã
ïŒããããå¿çã®æžã蟌ã¿åã«èšå®ããã®ãèªç¶ãªèšèšã«ãªã£ãŠããïŒã
- [INFO] ASP.NET ã®ã¢ããªã±ãŒã·ã§ã³ ã€ã³ã¹ã¿ã³ã¹ãã¢ããªã±ãŒã·ã§ã³ ã€ãã³ããããã³ã¢ããªã±ãŒã·ã§ã³ç¶æ
https://support.microsoft.com/ja-jp/help/312607/ - [INFO] ASP.NET ã® HTTP ã¢ãžã¥ãŒã«ãš HTTP ãã³ãã©ã®æŠèŠ
https://support.microsoft.com/ja-jp/help/307985/ - Visual C# .NET ã䜿çšã㊠ASP.NET HTTP ã¢ãžã¥ãŒã«ãäœæããæ¹æ³
https://support.microsoft.com/ja-jp/help/307996/
-
HttpApplication ã¯ã©ã¹ (System.Web)
https://learn.microsoft.com/ja-jp/dotnet/api/system.web.httpapplication -
IHttpModule ã€ã³ã¿ãŒãã§ã€ã¹ (System.Web)
https://learn.microsoft.com/ja-jp/dotnet/api/system.web.ihttpmodule -
IHttpHandler ã€ã³ã¿ãŒãã§ã€ã¹ (System.Web)
https://learn.microsoft.com/ja-jp/dotnet/api/system.web.ihttphandler -
ASP.NET HTTP ã¢ãžã¥ãŒã«ãšãã³ãã©ãŒ
https://learn.microsoft.com/ja-jp/troubleshoot/developer/webapps/aspnet/development/http-modules-handlers -
HTTP ãã³ãã©ãŒãšã¢ãžã¥ãŒã«ã ASP.NET Core ããã«ãŠã§ã¢ã«ç§»è¡ãã
https://learn.microsoft.com/ja-jp/aspnet/core/migration/http-modules
- HTTP handler vs HTTP module - Stack Overflow
https://stackoverflow.com/questions/6449132/http-handler-vs-http-module - Difference between ASP.NET HttpHandler and HttpModule
http://www.c-sharpcorner.com/blogs/difference-between-asp-net-httphandler-and-httpmodule1
- asp.net - What is the difference between HttpApplication class and IHttpModule? - Stack Overflow
https://stackoverflow.com/questions/4850056/what-is-the-difference-between-httpapplication-class-and-ihttpmodule
- ASP.NETã®ã©ã€ããµã€ã¯ã«ã®ä»çµã¿
http://article.higlabo.com/ja/asp_net_life_cycle.html
- ASP.NET ã®ã€ãã³ãçºçé åº â MiYABiS note.
http://note.miyabis.jp/2009/11/33503965.html
- ããã°è¡šç€ºïŒïŒïŒ -ã¯ã©ã¹ã©ã€ãã©ãª | ++C++; // æªç¢ºèªé£è¡ C
http://ufcpp.net/study/dotnet/aspx/blog3/ - URLã®ãªãã€ã¬ã¯ã
http://uchukamen.com/ASPNET20/URLRedirect/index.htm
Tags: ç§»è¡, .NETéçº, ASP.NET