IHttpHandlerFactory.GetHandler メソッド
アセンブリ: System.Web (system.web.dll 内)

Function GetHandler ( _ context As HttpContext, _ requestType As String, _ url As String, _ pathTranslated As String _ ) As IHttpHandler
Dim instance As IHttpHandlerFactory Dim context As HttpContext Dim requestType As String Dim url As String Dim pathTranslated As String Dim returnValue As IHttpHandler returnValue = instance.GetHandler(context, requestType, url, pathTranslated)
IHttpHandler GetHandler ( HttpContext context, string requestType, string url, string pathTranslated )
IHttpHandler^ GetHandler ( HttpContext^ context, String^ requestType, String^ url, String^ pathTranslated )
IHttpHandler GetHandler ( HttpContext context, String requestType, String url, String pathTranslated )
function GetHandler ( context : HttpContext, requestType : String, url : String, pathTranslated : String ) : IHttpHandler
- context
HTTP 要求を処理するために使用する、組み込みのサーバー オブジェクト (たとえば、Request、Response、Session、および Server) への参照を提供する HttpContext クラスのインスタンス。
要求を処理する新しい IHttpHandler オブジェクト。

クライアントの要求に応じてカスタム ハンドラ オブジェクトを作成する方法を次のコード例に示します。この例は、2 つの部分で構成されます。
この例の最初の部分では、abc.aspx または xyz.aspx. のいずれかの名前のページを求めるクライアント要求への応答として、カスタム ハンドラ オブジェクトを作成する方法を示します。hwf という名前のハンドラ ファクトリ クラスが、要求されたページに応じて適切なハンドラ オブジェクトを作成します。
' Name this Visual Basic file HandlerFactoryTest.vb and compile it with ' the command line: vbc /t:Library /r:System.Web.dll HandlerFactoryTest.vb. ' Copy HandlerFactoryTest.dll to your \bin directory. Imports System Imports System.Web Namespace test ' Factory class that creates a handler object based on a request ' for either abc.aspx or xyz.aspx as specified in the Web.config file. Public Class MyFactory Implements IHttpHandlerFactory <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Public Overridable Function GetHandler(context As HttpContext, _ requestType As String, url As String, pathTranslated As String) _ As IHttpHandler _ Implements IHttpHandlerFactory.GetHandler Dim fname As String = url.Substring(url.LastIndexOf("/"c) + 1) Dim cname As String = fname.Substring(0, fname.IndexOf("."c)) Dim className As String = "test." & cname Dim h As Object = Nothing Try ' to create the handler object. ' Create by calling class abc or class xyz. h = Activator.CreateInstance(Type.GetType(className)) Catch e As Exception Throw New HttpException("Factory couldn't create instance " & _ "of type " & className, e) End Try Return CType(h, IHttpHandler) End Function ' This is a must override method. Public Overridable Sub ReleaseHandler(handler As IHttpHandler) _ Implements IHttpHandlerFactory.ReleaseHandler End Sub End Class ' Class definition for abc.aspx handler. Public Class abc Implements IHttpHandler Public Overridable Sub ProcessRequest(context As HttpContext) _ Implements IHttpHandler.ProcessRequest context.Response.Write("<html><body>") context.Response.Write("<p>ABC Handler</p>" & _ Microsoft.VisualBasic.ControlChars.CrLf) context.Response.Write("</body></html>") End Sub Public Overridable ReadOnly Property IsReusable() As Boolean _ Implements IHttpHandler.IsReusable Get Return True End Get End Property End Class ' Class definition for xyz.aspx handler. Public Class xyz Implements IHttpHandler Public Overridable Sub ProcessRequest(context As HttpContext) _ Implements IHttpHandler.ProcessRequest context.Response.Write("<html><body>") context.Response.Write("<p>XYZ Handler</p>" & _ Microsoft.VisualBasic.ControlChars.CrLf) context.Response.Write("</body></html>") End Sub Public Overridable ReadOnly Property IsReusable() As Boolean _ Implements IHttpHandler.IsReusable Get Return True End Get End Property End Class End Namespace '______________________________________________________________ ' 'To use the handler factory, use the following lines in a 'Web.config file. (be sure to remove the comment markers) ' '<configuration> ' <system.web> ' <httpHandlers> ' <add verb="*" path="abc.aspx" type="test.MyFactory ,HandlerFactoryTest" /> ' <add verb="*" path="xyz.aspx" type="test.MyFactory ,HandlerFactoryTest" /> ' </httpHandlers> ' </system.web> '</configuration>
// Name this C# file HandlerFactoryTest.cs and compile it with the // command line: csc /t:Library /r:System.Web.dll HandlerFactoryTest.cs. // Copy HandlerFactoryTest.dll to your \bin directory. namespace test { using System; using System.Web; // Factory class that creates a handler object based on a request // for either abc.aspx or xyz.aspx as specified in the Web.config file. public class MyFactory : IHttpHandlerFactory { [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] public virtual IHttpHandler GetHandler(HttpContext context, String requestType, String url, String pathTranslated) { String fname = url.Substring(url.LastIndexOf('/')+1); String cname = fname.Substring(0, fname.IndexOf('.')); String className = "test." + cname; Object h = null; // Try to create the handler object. try { // Create the handler by calling class abc or class xyz. h = Activator.CreateInstance(Type.GetType(className)); } catch(Exception e) { throw new HttpException("Factory couldn't create instance " + "of type " + className, e); } return (IHttpHandler)h; } // This is a must override method. public virtual void ReleaseHandler(IHttpHandler handler) { } } // Class definition for abc.aspx handler. public class abc : IHttpHandler { public virtual void ProcessRequest(HttpContext context) { context.Response.Write("<html><body>"); context.Response.Write("<p>ABC Handler</p>\n"); context.Response.Write("</body></html>"); } public virtual bool IsReusable { get { return true; } } } // Class definition for xyz.aspx handler. public class xyz : IHttpHandler { public virtual void ProcessRequest(HttpContext context) { context.Response.Write("<html><body>"); context.Response.Write("<p>XYZ Handler</p>\n"); context.Response.Write("</body></html>"); } public virtual bool IsReusable { get { return true; } } } } /* ______________________________________________________________ To use the handler factory, use the following lines in a Web.config file. <configuration> <system.web> <httpHandlers> <add verb="*" path="abc.aspx" type="test.MyFactory ,HandlerFactoryTest" /> <add verb="*" path="xyz.aspx" type="test.MyFactory ,HandlerFactoryTest" /> </httpHandlers> </system.web> </configuration> */
package test; // Name this J# file HandlerFactoryTest.jsl and compile it with the // command line: vjc /t:Library /r:System.Web.dll HandlerFactoryTest.jsl. // Copy HandlerFactoryTest.dll to your \bin directory. import System.*; import System.Web.*; // Factory class that creates a handler object based on a request // for either abc.aspx or xyz.aspx as specified in the Web.config file. public class MyFactory implements IHttpHandlerFactory { public IHttpHandler GetHandler(HttpContext context, String requestType, String url, String pathTranslated) throws HttpException { String fname = url.Substring((url.LastIndexOf('/') + 1)); String cname = fname.Substring(0, fname.IndexOf('.')); String className = "test." + cname; Object h = null; // Try to create the handler object. try { // Create the handler by calling class abc or class xyz. h = Activator.CreateInstance(Type.GetType(className)); } catch (System.Exception e) { throw new HttpException("Factory couldn't create instance " + "of type " + className, e); } return ((IHttpHandler)h); } //GetHandler // This is a must override method. public void ReleaseHandler(IHttpHandler handler) { } //ReleaseHandler } //MyFactory // Class definition for abc.aspx handler. public class abc implements IHttpHandler { public void ProcessRequest(HttpContext context) { context.get_Response().Write("<html><body>"); context.get_Response().Write("<p>ABC Handler</p>\n"); context.get_Response().Write("</body></html>"); } //ProcessRequest /** @property */ public boolean get_IsReusable() { return true; } //get_IsReusable } //abc // Class definition for xyz.aspx handler. public class xyz implements IHttpHandler { public void ProcessRequest(HttpContext context) { context.get_Response().Write("<html><body>"); context.get_Response().Write("<p>XYZ Handler</p>\n"); context.get_Response().Write("</body></html>"); } //ProcessRequest /** @property */ public boolean get_IsReusable() { return true; } //get_IsReusable } //xyz /* ______________________________________________________________ To use the handler factory, use the following lines in a Web.config file. <configuration> <system.web> <httpHandlers> <add verb="*" path="abc.aspx" type="test.MyFactory , HandlerFactoryTest" /> <add verb="*" path="xyz.aspx" type="test.MyFactory , HandlerFactoryTest" /> </httpHandlers> </system.web> </configuration> */
// Name this JScript file HandlerFactoryTest.js and compile it with // the command line: jsc /t:library /r:System.Web.dll HandlerFactoryTest.js. // Copy HandlerFactoryTest.dll to your bin directory. import System import System.Web package test{ // Factory class that creates a handler object based on request // for either abc.aspx or xyz.aspx : specified in web.config. class MyFactory implements IHttpHandlerFactory{ function IHttpHandlerFactory.GetHandler(context : HttpContext, requestType : String, url : String, pathTranslated : String) : IHttpHandler{ var fname : String = url.Substring(url.LastIndexOf(Char("/")) + 1) var cname : String = fname.Substring(0, fname.IndexOf(Char("."))) var className : String = "test." + cname var h : Object = null try{// to create the handler object. // Create by calling class abc or class xyz. h = Activator.CreateInstance(Type.GetType(className)) }catch(e : Exception){ throw new HttpException("Factory couldn't create instance of type " + className, e) } return IHttpHandler(h) } // Must override this class. function IHttpHandlerFactory.ReleaseHandler(handler : IHttpHandler){ } } // Class definition for abc.aspx handler. class abc implements IHttpHandler{ function IHttpHandler.ProcessRequest(context : HttpContext){ context.Response.Write("<html><body>") context.Response.Write("<p>ABC Handler</p>\r\n") context.Response.Write("</body></html>") } function get IHttpHandler.IsReusable() : Boolean{ return true } } // Class definition for xyz.aspx handler. class xyz implements IHttpHandler{ function IHttpHandler.ProcessRequest(context : HttpContext){ context.Response.Write("<html><body>") context.Response.Write("<p>XYZ Handler</p>\r\n") context.Response.Write("</body></html>") } function get IHttpHandler.IsReusable() : Boolean{ return true } } } //______________________________________________________________ // //To use the above handler factory, use the following lines in a //Web.config file. (remove the comment markers) // //<configuration> // <system.web> // <httpHandlers> // <add verb="*" path="abc.aspx" type="test.MyFactory ,HandlerFactoryTest" /> // <add verb="*" path="xyz.aspx" type="test.MyFactory ,HandlerFactoryTest" /> // </httpHandlers> // </system.web> //</configuration>
この例の 2 番目の部分では、Web.config の抜粋を示します。上記のハンドラ ファクトリを使用するには、次の行を Web.config ファイルに追加します。
<configuration> <system.web> <httpHandlers> <add verb="*" path="abc.aspx" type="test.MyFactory,HandlerFactoryTest" /> <add verb="*" path="xyz.aspx" type="test.MyFactory,HandlerFactoryTest" /> </httpHandlers> </system.web> </configuration>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からIHttpHandlerFactory.GetHandler メソッドを検索する場合は、下記のリンクをクリックしてください。

- IHttpHandlerFactory.GetHandler メソッドのページへのリンク