如何添加公共代码(特别是标记为WebMethod()的方法)

时间:2009-01-22 18:19:40

标签: asp.net vb.net web-services

我有一些ASP.NET页面和webservice WebMethod()方法,我想添加一些常用代码。例如:

<WebMethod()> _
Public Function AddressLookup(ByVal zipCode As String) As Address
    #If DEBUG Then
        ' Simulate a delay
        System.Threading.Thread.Sleep(2000)
    #End If
    Return New Address()
End Function

我目前在所有的WebMethod()方法中都有#If Debug代码,但我认为必须有更好的方法来实现这一点,而无需实际输入代码。

有没有办法确定请求是否是Application_EndRequest中的WebMethod,以便我可以在项目范围内添加此延迟?

请注意,有些方法是Page方法,有些是Web服务方法。

2 个答案:

答案 0 :(得分:1)

您可以在Application_EndRequest中检查请求URL,以确定它是否是Web方法调用。例如。这样的事情(对不起,这是在C#中):

protected void Application_EndRequest(Object sender, EventArgs e)
{
  if (Request.Url.ToString().IndexOf("MyWebService.asmx") > 0)
  {
    // Simulate a delay
    System.Threading.Thread.Sleep(2000);
  }
}

答案 1 :(得分:1)

#if DEBUG代码封装在方法中,并使用<Conditional("DEBUG")>进行标记。这样,您只需在每个<WebMethod>中编写一个方法调用。可能有用。