2012-11-13 14 views
0
  • 我有一個asmx web服務,它是我的ASP.Net web應用程序的一部分。我想使用基於事件的方法以異步方式調用此Web服務。這是可能的,如果是這樣的話?如果這是不可能的,有什麼選擇?
  • 另外,我可以以async方式調用一個靜態的PageMethod,該頁面是用'[WebMethod]'屬性裝飾的aspx頁面嗎?我第方法的一個例子是:如何調用ASP.Net網站內部的asmx web服務方法ASYNCHRONOUSLY?

    [WebMethod] 
    public static SupplierData GetAgeSummary(string supplierId) 
    { 
        return ABC.Data.SupplierData.GetAgeSummary(supplierId); 
    } 
    

以Async我的意思是在服務器端異步,而不是客戶端。

回答

1

網站的服務器端不能以可靠的方式異步調用。由於所有線程只在父線程期間保持活動狀態,因此如果異步線程在站點完成並移至響應時仍在執行,則會終止父線程,並且所有子項都將被強制停止執行。

如果您正在使用的應用程序是使用Web服務作爲參考的WinForms或WPF應用程序,則可以異步調用它,因爲應用程序(它運行在父線程上)可以依賴於活動持續時間的服務電話。但是,在Web應用程序中,回調傳遞之前很可能會構建響應。