如何判断传入的请求是否是webmethod请求?

时间:2013-06-12 13:25:55

标签: c# asp.net webmethod

在ASP.NET中,当请求进入时,如果请求是webmethod请求,我如何判断(在实际的webmethod被调用之前)?

这些方面的东西:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {

        if (IsWebMethod())
        {
            DoLogging();
        }
    }

我需要进行哪些测试才能准确确定IsWebMethod()何时应为真?

为什么:我们公开了几个web服务(.asmx),我正在尝试实现一种DRY技术来捕获有关这些调用的信息。

2 个答案:

答案 0 :(得分:2)

由于WebMethod调用只是一个常规的GET或POST HTTP请求,因此除了检查请求URL并确定它是否与其中一个URL匹配之外,我认为您无法做任何事情来确定这是否是WebMethod调用。为您的WebMethods。

换句话说,假设您的Web服务名为default.asmx且方法为DoSomething,您可以检查请求是否匹配

default.asmx/DoSomething 

然后记录下来。我想可以安全地假设,因为您的Web方法将在default.asmx下公开,您只需在请求的URL中查找该字符串。

答案 1 :(得分:0)

您可以创建路径集合并检查请求URL以查找匹配路径,或者如果您的所有Web方法都在一组类下,则可以检查HttpContext.Current.CurrentHandler的类型并将其与已知类型进行比较Web方法所在的类型集。