У меня есть некоторые методы страницы ASP.NET и веб-службы 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
В настоящее время у меня есть код #If Debug во всех моих методах WebMethod (), но я думаю, что должен быть лучший способ сделать это, не набирая код.
Есть ли способ определить, идет ли запрос к WebMethod в Application_EndRequest, чтобы я мог добавить этот проект задержки в целом?
Обратите внимание, что некоторые методы являются методами страницы, а некоторые - методами веб-службы.





Вы можете проверить URL-адрес запроса в Application_EndRequest, чтобы определить, является ли это вызовом веб-метода. Например. что-то вроде этого (извините, это на 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);
}
}
Это хорошо ... см. Мою правку: некоторые методы - это PageMethods, а некоторые - из веб-службы, поэтому поиск asmx не улавливает все. Я должен был указать это с самого начала.
Может быть, разделить методы страницы и методы веб-службы на две веб-службы? Затем вы можете проверить URL-адрес «MyWebService.asmx». В противном случае, я думаю, подход Мехрдада мог бы быть лучше.
Инкапсулируйте код #if DEBUG в методе и пометьте его как <Conditional("DEBUG")>. Таким образом, вы просто пишете вызов метода в каждом <WebMethod>. Может быть полезно.
Я также изучаю PostSharp, чтобы увидеть, может ли это привести к желаемым результатам.