在ASP.NET中,当请求进入时,如果请求是webmethod请求,我如何判断(在实际的webmethod被调用之前)?
这些方面的东西:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (IsWebMethod())
{
DoLogging();
}
}
我需要进行哪些测试才能准确确定IsWebMethod()何时应为真?
为什么:我们公开了几个web服务(.asmx),我正在尝试实现一种DRY技术来捕获有关这些调用的信息。
答案 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方法所在的类型集。