2011-02-23 112 views
0

有點背景......我有一個與服務通信的.NET網頁。 (使用OnCustomCommand())當用戶按下按鈕時,調用一個函數。這一切都很好,但是當函數完成執行時,我需要能夠發送消息,函數調用或一些通信到.NET網頁。ASP.NET通信服務

有沒有辦法讓我的服務調用函數,發送消息或更新我的.Net網頁?

我環顧四周,主要看到.NET - >服務,但似乎沒有其他方式。

編輯:它是一個Windows服務,ASP頁面和WindowsService駐留在同一臺服務器上。

+0

服務 - Windows服務或Web服務? – 2011-02-23 22:18:15

+0

當你說「更新我的.NET網頁」?你的意思是你想觸發服務器端的ASP.NET代碼,或者你想讓用戶端的瀏覽器顯示更新? – tenor 2011-02-23 22:20:54

+0

或者...當服務完成運行時,我希望基本上要通知用戶服務已完成。 – TxAg 2011-02-23 22:37:48

回答

1

讓服務將輸出寫入公共區域......例如共享文件或數據庫。然後刷新網頁並讓它查詢該文件以獲取響應輸出。

支持多個用戶,您應該有一些會話ID用於確定輸出的保存位置。例如,調用命令行參數使用GUID是這樣的:

Echo This is a test > c:\Some Directory\Session12345.txt 

,然後讓aspx頁面查詢並刷新使用這樣http://example.com/GetOutput.aspx?Session=12345

一個GET從那裏使用ASP訪問一個文件與在URL中添加SessionID。

您可以擴展此概念以根據需要使用JQuery和WCF。當然,你需要增加安全性來防止MITM攻擊。但這聽起來像是一個沒有連接到互聯網的小型項目,所以額外的功能可能並不那麼重要。

+0

好吧,太棒了。這是否允許頁面實時更新?假設用戶保持窗口打開,並且服務完成。這個更新會盡快完成嗎?還是必須經常查詢才能獲得更新? – TxAg 2011-02-23 22:39:20

+0

是的,這是我正在開發的一個小型內部項目。只需在本地網絡上訪問即可。 – TxAg 2011-02-23 22:40:33

+0

是的,你將不得不輪詢獲得輸出。例如,你可以寫一個名爲'sessionDone12345.txt'的文件,如果它存在,停止刷新,或者做jquery。簡單的方法可能是設置頁面 – LamonteCristo 2011-02-23 22:45:40

1

通信只能從客戶端到服務器完成。使用Ajax/webservice/scriptmethod檢索服務調用的狀態。

+0

謝謝!這很難實現嗎? – TxAg 2011-02-23 22:54:28

+0

這種類型的問題在不知道應用程序需求,複雜程度等因素的情況下總是很難回答。但是,如果您以前使用過webservices/Ajax,通常這很容易。 – 2011-02-23 22:57:00

+0

我幾乎沒有使用webservices/Ajax的經驗......哪裏會是一個很好的開始? – TxAg 2011-02-25 20:28:03