1

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

这些方面的东西:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {

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

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

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

4

2 回答 2

2

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

换句话说,假设您的 Web 服务被调用default.asmx并且有一个方法DoSomething,您可以检查请求以查看它是否匹配

default.asmx/DoSomething 

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

于 2013-06-12T14:20:37.723 回答
0

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

于 2013-06-12T14:36:26.413 回答