WCF和错误存储过程

时间:2012-08-09 16:46:21

标签: c# stored-procedures wcf-data-services

我有一个存储过程,它返回SQL Server中的databasemail状态,返回字符串“stopped”或“started”。我必须在C#,Silverlight和WCF数据服务中使用它。

这是我的代码:

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

我有错误:

  

处理响应流时出错。 XML元素包含混合   内容。

服务操作:

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

我发现“.NET 4.0仍然不支持返回原始或复杂类型(或那些集合)的服务操作的响应的实现。”在这个duscussion http://go4answers.webhost4life.com/Example/incoking-webget-throws-exception-56000.aspx。这是真的吗?

1 个答案:

答案 0 :(得分:0)

IQueryable通常用于尚未执行的列表,并且需要交互式迭代。因为您在服务器上一起提取数据,所以最好拉出整个状态记录列表,然后将它们发送给您的客户端。尝试在响应中使用List而不是IQueryable。请注意,List是可序列化的。

假设“CurrentDataSource.status_serwer()”返回一个可枚举的字符串列表,这段代码可能会起到作用:

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