2009-01-22 2 views
0

몇 가지 공통 코드를 추가하려는 ASP.NET 페이지와 WebService WebMethod() 메서드가 있습니다. 예를 들어 :공통 코드를 추가하는 방법 (구체적으로 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 디버그 코드를 가지고 있지만, 사실의 코드를 입력 할 필요없이이 작업을 수행 할 수있는 더 좋은 방법이 있어야한다 생각하고

.

이 지연 프로젝트를 추가 할 수 있도록 요청이 Application_EndRequest의 WebMethod에 있는지 확인하는 방법이 있습니까?

일부 메서드는 Page 메서드이고 일부는 웹 서비스 메서드입니다.

+0

제가 원하는 결과를 얻을 수 있는지 알아보기 위해 PostSharp도 조사하고 있습니다. – slolife

답변

1

Application_EndRequest에서 요청 URL을 확인하여 웹 메소드 호출인지 여부를 확인할 수 있습니다. 예 : 이 같은 (죄송는 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); 
    } 
} 
+0

그래, 괜찮지 만 내 편집을 봐라. 일부 메소드는 PageMethods이고 일부는 웹 서비스에서 온 것이기 때문에 asmx 검색은 모든 것을 잡아 내지 못할 것이다. 나는 그것을 출발에서 지정해야했다. – slolife

+0

페이지 메서드와 웹 서비스 메서드를 두 개의 웹 서비스로 나눌 수 있습니까? 그런 다음 "MyWebService.asmx"에 대한 URL을 확인할 수 있습니다. 그렇지 않으면 Mehrdad의 접근 방식이 더 나을 수도 있습니다. – M4N

1

이 방법에 #if DEBUG 코드를 캡슐화하고 <Conditional("DEBUG")>로 표시합니다. 이 방법으로 각 <WebMethod>에 메서드 호출을 작성하면됩니다. 유용 할 수도 있습니다.

관련 문제