2011-04-26 63 views
4

我正在開發一個Visual Studio 2010中的一個解決方案,該解決方案在IIS(此時實際上是Cassini)託管的WCF RESTful服務和原型ASP.NET MVC客戶端。我有一切通信,但調試客戶端時無法進入服務。如何從.NET客戶端應用程序進入WCF Rest服務?

我有一個「服務代理」類,我的控制器使用它來處理服務。服務代理使用下面的代碼,以使實際服務電話:

var factory = new WebChannelFactory<IServiceContract>("theEndpointConfigName"); 
var channel = factory.CreateChannel(); 

var result = channel.CallTheService(); 

我可以設置在最後一行一個斷點,但打F11不踩我到服務,因爲我期望的那樣。

兩個項目都存在於相同的解決方案中,並且我已驗證通過修改響應數據來正確調用服務。

我錯過了什麼?

+0

您是否將VS附加到IIS工作進程? – 2011-04-26 19:19:15

+0

我從來不需要在同一個解決方案中使用WCF服務。這是不同的,因爲服務使用REST? – SonOfPirate 2011-04-26 19:34:01

回答

2

我真的偶然發現了答案。我會感謝基督徒在不知不覺中把我朝正確的方向指引。你關於debuger關於某個或另一個過程的陳述,但都不是讓我思考。我想到我的網絡項目是我解決方案中唯一的啓動項目。作爲百靈,我決定嘗試在啓動列表中添加我的WCF服務應用程序。中提琴!這一切都花了!

所以現在我有兩個項目啓動。我已經更改了我的WCF Service應用程序中的設置,因此它不會在啓動時顯示一個頁面。現在一切都按我所期望的那樣工作。

感謝您的正確方向!

+0

不客氣! – 2011-04-26 19:45:11

3

Visual Studio調試器無法跨越進程邊界。您可以附加到客戶端進程或服務器進程,但不能同時進行。

以下是一些建議:

  • 首先調試客戶端代碼。如果該錯誤不存在,則再次重新生成該錯誤,但調試服務代碼而不是客戶端代碼。
  • 爲調試目的創建兩個單獨的解決方案,一個僅包含客戶端項目,另一個僅包含服務項目。然後,您可以並排運行兩個IDE實例中的兩個解決方案。
  • 添加單元測試。如果「客戶端」是單純的單元測試方法而不是完整的客戶端,那麼在服務中發現錯誤會容易得多。
+0

不幸的是,這應該是一個快速和骯髒的概念驗證,所以我現在真的沒有跟隨TDD。如果我們在解決方案中進行真正的開發,我會這樣做。我不明白的是,在使用帶有SOAP的WCF時,我沒有問題進入我的服務操作。 REST是問題嗎? – SonOfPirate 2011-04-26 19:35:21

+0

我也在想未來。能夠進入服務是解決問題時的一個很好的功能。 – SonOfPirate 2011-04-26 19:37:38

+0

老實說,我從來沒有爲服務開發的「快速和骯髒」階段感到困擾,我總是直接進入IIS並在第一天進行單元測試,所以我無法就此提供任何建議,對不起。 – 2011-04-26 19:42:20