2013-06-12 47 views
1

在ASP.NET中有请求时,如果请求是web方法请求,我该如何判断(在调用实际web方法之前)?如何判断传入请求是否是web方法请求?

这些方针的东西:

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 

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

哪些测试,我需要准确地确定何时IsWebMethod()应​​该是真的吗?

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

+0

看看IsCallback()会为你做诡计 –

+0

WebMethod在这个上下文中的请求永远不会回调。这些是对.asmx文件的调用。 –

回答

2

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

换句话说,假设你的Web服务被称为default.asmx并具有DoSomething你可以检查请求,看它是否符合

default.asmx/DoSomething 

,然后记录它的方法。我想可以肯定的是,由于您的网络方法将暴露在default.asmx之下,因此您可以在请求的URL中查找该字符串。

+0

这是我在我自己的调查中去的地方。我倾向于:HttpContext.Current.Request.CurrentExecutionFilePathExtension.ToLower()。EndsWith(“asmx”)&&!HttpContext.Current.Request.Path.ToLower()。EndsWith(“asmx”) –

0

您可以创建路径集合并检查匹配路径的请求URL,或者如果您的所有Web方法都位于一组类中,则可以检查HttpContext.Current.CurrentHandler的类型并将其与一组已知类型您的Web方法驻留在哪里。

相关问题