2012-08-09 27 views
1

我有一個存儲過程,返回SQL Server中的數據庫郵件的狀態,返回字符串「已停止」或「已啓動」。我必須在C#,Silverlight和WCF數據服務中使用它。WCF和錯誤存儲過程

這裏是我的代碼:

contex.BeginExecute<String>(new Uri(uri2), OnQueryComplete3, null); 
... 
private void OnQueryComplete3(IAsyncResult result) 
{ 
    grLog.ItemsSource = contex.EndExecute<String>(result).ToList<String>(); 
} 

而且我有錯誤:

Error processing response stream. The XML element contains mixed content.

的服務操作:

[WebGet] 
public IQueryable<String> Status_Serwer() 
{ 
return CurrentDataSource 
.status_serwer() 
.AsQueryable(); 
} 

我覺得」 .NET 4.0仍然不支持物化來自返回原始或複雜類型(或那些集合)的服務操作的響應。「在這個討論http://go4answers.webhost4life.com/Example/incoking-webget-throws-exception-56000.aspx。這是真的嗎?

+0

你能找出什麼的'contex.EndExecute (結果)結果'是,並將其張貼在這裏? – 2012-08-09 16:49:17

+0

更好 - 您能否使用Fiddler(或任何其他HTTP跟蹤器)等工具抓取響應並將其發佈到此處?另外,如何在服務中定義服務操作(什麼是返回類型)? – 2012-08-09 17:35:00

回答

0

IQueryable通常用於尚未執行的列表,並且需要交互式迭代。因爲你在服務器上把你的數據放在一起,所以把整個狀態記錄列表拉出來然後發送給你的客戶端可能會更好。在你的回覆中嘗試使用List而不是IQueryable。請注意,List是可序列化的。

假設「CurrentDataSource.status_serwer()」返回一個字符串枚舉列表,該代碼可能做的伎倆:

[WebGet] 
public List<String> Status_Serwer() 
{ 
    return CurrentDataSource 
      .status_serwer() 
      .ToList(); 
} 
+0

我改變了代碼,仍然是這個錯誤... – 2012-08-09 18:44:29

+0

你試圖返回一個響應列表,或只有一個響應(「停止」或「開始」)?如果只有一個響應,那麼你可以簡單地返回一個字符串,而不是試圖返回一個對象列表。 – JoshL 2012-08-10 16:46:46

+0

剛剛跑過這篇文章,這可能會有所幫助:http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2341c11e-92b3-4da4-aba5-858054f46c80/。如果您通過REST使用原始的「WebGet」操作,看起來您只能使用字符串,並且無法使用集合。 – JoshL 2012-08-10 16:54:15