のは、コードですべてのクラスを傍受するためにHTTPリクエストを見てみましょう。統合には、次の2種類がのIHttpModule IHttpHandlerFactoryを含めます
システムを使用しました。 System.Collections.Genericを使用しました。 System.Linqのを使用しました。 System.Webのを使用して、 名前空間SoonnetWebSite { /// <要約> /// Handler2的摘要说明 /// </要約> パブリッククラスHandler2:のIHttpModule { 公共ボイド廃棄() { } プライベートボイドApplication_AcquireRequestState(オブジェクトソース、のEventArgs電子) { のHttpApplicationのHttpApplication = (のHttpApplication)源; 文字列のURL = httpApplication.Context.Request.Path.ToLower(); ストリングimgPhysicalPath = httpApplication.Request.Url.ToString()。 。! - (imgPhysicalPath.ToLower()IndexOfメソッド( "HTTPS")= 0 && imgPhysicalPath.IndexOf( "ビデオ/ VideoUpload.aspx")== -1 && imgPhysicalPath.IndexOf( "写真/ PhotoUpload.aspx")==場合1) { imgPhysicalPath = imgPhysicalPath.Replace( "HTTP"、 "HTTPS")。 httpApplication.Response.Redirect(imgPhysicalPath)。 返します。 } // httpApplication.Response.Redirect(imgPhysicalPath)。 } 公共ボイド初期(のHttpApplicationコンテキスト) { context.AcquireRequestState + =(新しいイベントハンドラ(this.Application_AcquireRequestState))。 } //パブリックIHTTPハンドラGetHandler(のHttpContextコンテキスト、文字列requestType、文字列のURL、文字列pathTranslated) // { // IHTTPハンドラハンドラ= NULL; //文字列アクション= url.Substring(url.LastIndexOf( "/"、StringComparison.Ordinal)+ 1)。 //アクション= action.Substring(0、action.IndexOf(StringComparison.Ordinal) ""); //するvar RURL = context.Request.RawUrl.Replace( "/"、 ""); //文字列actionClass = $ "SoonnetWebSite {RURL}"; //} } }
私たちはIHTTPハンドラを見てみましょう
使用してシステムを。 使用してSystem.Collections.Genericを。 使用してSystem.IOを。 使用してSystem.Linqのを。 使用してのSystem.Webを。 名前空間SoonnetWebSite { /// <要約> /// Handler1的摘要说明 /// </要約> パブリック クラスHandler1:IHTTPハンドラ { 民間 のconst 文字列 DEFAULTIMAGE_URL = " /SGL_Images/Userlogo_Big.jpg " 。 公共 ボイドのprocessRequest(のHttpContextコンテキスト) { ストリング imgPhysicalPath =()context.Request.Url.ToString; 列 rawUrl = context.Request.RawUrl.ToString(); System.Drawing.Imageイメージ = NULL ; IF (File.Exists(context.Server.MapPath(rawUrl))) { / / 空の 画像= System.Drawing.Image.FromFile(context.Server.MapPath(rawUrl)); } 他 { // 画像が存在しない場合、デフォルト画像が置か 画像= System.Drawing.Image.FromFile(コンテキスト。 Server.MapPathの(DEFAULTIMAGE_URLは)); } // 提供される出力の種類を = context.Response.ContentType " 画像/ JPEG " ; // 出力ストリームでの画像保存 Image.Save(context.Response.OutputStream、System.Drawing.Imaging.ImageFormat.Jpeg); Image.Disposeを(); } 公共 BOOL IsReusable { GET { 戻り falseに; } } } }
次のようにコードの両端に配置
<system.webServer> <セキュリティ> <requestFiltering> <requestLimits maxAllowedContentLength = "1126400000" /> </ requestFiltering> </セキュリティ> <検証validateIntegratedModeConfiguration = "偽" /> <ハンドラ> <名前= "IHTTPハンドラ"動詞を追加=」 GET、POST "パス= "LokARX.cc"タイプ= "SoonnetWebSite.Web_Data.Lok_ARequestX、SoonnetWebSite"/> <名を追加= "IHttpHandler2"動詞= "GET"パス= "LokIF.cc"タイプ=" SoonnetWebSite.Web_Data。 Lok_Interface、SoonnetWebSite」/> <名を追加= "Handler1"動詞= "*"パス= "*。JPG"タイプ= "SoonnetWebSite.Handler1、SoonnetWebSite" /> </ハンドラ> <モジュール> <名前= "Handler2"タイプを追加= "SoonnetWebSite.Handler2、SoonnetWebSite" /> </モジュール> </system.webServer>
マシンのテストノードのIISの設定に問題が同じではありませんが見つかりました。レイアウト回線使用
<system.webServer> <セキュリティ> <requestFiltering> <requestLimits maxAllowedContentLength = "1126400000" /> </ requestFiltering> </セキュリティ> <検証validateIntegratedModeConfiguration = "偽" /> <のhttpHandlers> <名前= "IHTTPハンドラ"動詞を追加=」 GET、POST "パス= "LokARX.cc"タイプ= "SoonnetWebSite.Web_Data.Lok_ARequestX、SoonnetWebSite"/> <名を追加= "IHttpHandler2"動詞= "GET"パス= "LokIF.cc"タイプ=" SoonnetWebSite.Web_Data。 Lok_Interface、SoonnetWebSite」/> <名を追加= "Handler1"動詞= "*"パス= "*。JPG"タイプ= "SoonnetWebSite.Handler1、SoonnetWebSite" /> </ httpHandlersの> <のHttpModules> <名前= "Handler2"タイプを追加= "SoonnetWebSite.Handler2、SoonnetWebSite" /> </のHttpModules> </system.webServer>
フロントのhttp以上の設定
IISは関係の統合モデルと古典的なモデルであるため、
参考リンクします。https://blog.csdn.net/hongwei_23/article/details/44300923
HTTP、HTTPS、ターンの参照リンクします。https://blog.csdn.net/suxuelian/article/details/80103514