2013-10-31 39 views
0

我正在使用Visual Studio 2010.我有一個非常簡單的asp.net網頁,我瀏覽並上傳了一個xml文件,現在我有2個文本框。在左邊的框中,我顯示了原始的xml內容,然後,我想調用WCF服務,使用xml作爲輸入,並顯示在右側框中返回的結果。如何調試調用WCF服務的程序,

現在,我不斷收到「消息服務隊列不可用」錯誤。我已經從谷歌搜索設置消息隊列服務的系統帳戶。

所以現在,我需要調試服務。經過四處搜尋,我認爲重視過程可能是一個好方法。然而,在我的同事的機器中,重新啓動服務非常快,我無法阻止它,然後單擊調試 - >附加到進程 - > select_exe,並且老實說,它根本不會停在OnStart函數中。 ..

WCF作爲Windows服務託管。

任何人都可以給我任何你的經驗和知識的想法或提示嗎?或者你認爲在我的情況下可能會更好的其他任何方法。

任何想法表示讚賞。萬分感謝。 =)

+0

如果這是一個你控制的服務,只需要在它的開頭添加一個Debugger.Launch()以附加到它 – devshorts

+0

@Abhinav我在OnStart函數中放置了一個斷點,我嘗試重新啓動服務,服務停止然後啓動,它不會停止在onstart函數。 – user2751691

回答

1

修改服務代碼,以便檢測,要麼它是從調試器使用Environment.UserInteractive Property或運行簡單,它是在調試模式(#ifdef DEBUG)(而不是發佈),然後啓動該程序作爲控制檯應用程序,而不是服務。

例如:

static void Main() 
    { 
#ifdef DEBUG 
     Application.Run(); 
#else 
     ServiceBase service = new SampleService(); 
     ServiceBase.Run(service); 
#endif 
    } 

這將允許您設置斷點和步入代碼在Visual Studio中的一個實例同時運行在另一個客戶端代碼。

+0

那就是我正在談論的改變。這樣你可以擺脫SCM。 – Abhinav

+0

@ ChrisF♦謝謝。另外,關於測試的問題放在一邊:存根,moq和痣與我的問題有關,我是否應該花時間爲目前的項目進行探索? – user2751691

+0

@ user2751691 - 不,它們用於單元測試。 – ChrisF

0

這個WCF服務是如何託管的? Web服務,Windows服務,控制檯應用程序等?在任何情況下,你都可以在VS中調試該應用程序,並讓你的應用程序擊中它。對於Windows服務,您必須稍微更改代碼以進行調試。

+0

它作爲windows服務託管 – user2751691

+0

謝謝。另外,關於測試的問題放在一邊:存根,moq和痣與我的問題有關,我是否應該花時間爲目前的項目進行探索? – user2751691