如何在Application_BeginRequest期间使用反射来实例化Web服务方法?

时间:2014-02-14 03:05:37

标签: c# asp.net .net vb.net asmx

Application_BeginRequest 任何Global.asaxSystem.Web.Services.WebService事件期间,是否有可靠的方法来使用反射实例化或检查预期的Web服务方法?我需要确定所调用的Web服务的属性值是什么。

我非常确定HttpContext.Current.Request中有必要的信息可以执行此操作,但我对反射语法不够熟悉。

GLOBAL ASAX

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim InboundRequest As HttpRequest = HttpContext.Current.Request

    'ASSUMING REQUEST IS FOR DemoService.asmx/ExampleMethod'

    'NEED CODE HERE TO DETERMINE '
    'WHAT THE VALUE OF THE "ScriptMethod" ATTRIBUTE IS'
End Sub

WEB服务

<ToolboxItem(False), ScriptService()> _
Public Class DemoService
    Inherits System.Web.Services.WebService

    <WebMethod(), ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
    Public Function ExampleMethod()
        Return "Hello World"
    End Function
End Class

欢迎VB.Net或C#答案,我可以转换为必要的

1 个答案:

答案 0 :(得分:0)

你可以,但我认为在PreRequestHandlerExecute事件中做任何你打算做的事情会更好,因为你已经有了asp.net创建的web服务对象实例。请记住,所有类型的处理程序(页面,Web服务,通​​用等)都会触发此事件。

如果你想自己走这条路线,那么你只需要做Activator.CreateInstance(type),其中type是web服务类型。