【问题标题】:WCF Service not returning collection in web applicationWCF 服务未在 Web 应用程序中返回集合
【发布时间】:2013-03-24 22:30:10
【问题描述】:

我的 WCF 服务托管在本地 IIS 上。当我从应用程序调用它时,我无法从 wcf 调用中获得结果。但奇怪的是,它在调试(进入服务类时)显示正确的结果并在暂存类中返回对象数组。当调试到应用程序时,它返回空数组。我收到了来自应用程序的以下电话。

    public List<SurveyQuestion> GetCommonQuestionsForCompentency()
    {
        List<SurveyQuestion> questions = new List<SurveyQuestion>();
        SurveyQuestion[] ques = null;
        ICSSService.SurveyServiceClient client = null;
        try
        {
            client = (SurveyServiceClient)WCFSecurityEntityForSurvey.getSurveyClient();
            ques = client.GetCommonQuestionsByCategoryType(2);
            questions = ques.ToList<SurveyQuestion>();
            return questions;
        }
        catch (Exception)
        {
            throw;
        }
        finally{ client.Close();}
    }

调用如下所示的wcf服务类

实施有什么问题。有什么帮助吗?

编辑:

它适用于没有列表的简单服务调用。我认为问题可能在于收藏品的退回。我发现了类似的问题Here。但并没有从中得到太多。

【问题讨论】:

  • 在调试时您是否在即时窗口或快速查看窗口中检查了变量?还要检查应用程序的调试模式是否开启,是否处于发布模式。(配置管理器)
  • 是的,web.config 中有标签``
  • 问题在于它返回的行数。我曾经有过这个确切的问题。尝试将查询限制为一定数量的行,然后尝试.. 像 rownum
  • 它只给了我 12 行。不是数据问题
  • 我明白了.. 你是否检查过该代理函数的 oncompleted 函数是否正在触发。

标签: asp.net wcf wcf-data-services wcf-binding wcf-security


【解决方案1】:

我也有类似的问题。这是因为引用没有正确添加,我修改了 reference.cs 文件。因此,如果应用程序中的命名空间不同,则无法正确获取数据。只需检查应用程序中的命名空间。查看您的应用程序中的某个类是否具有与其他类不同的命名空间

【讨论】:

    【解决方案2】:

    您需要做的就是添加一个已完成的函数,然后将网格数据源添加到该函数中。

    在页面加载中添加

    AddHandler client.GetEndorsementCompleted, AddressOf GetEndorsement
    

    然后添加以下函数让异步函数命中。

    Private Sub GetEndorsement(ByVal sender As Object, ByVal e As SR.GetEndorsementCompletedEventArgs) If Not e.Result.Equals(Nothing) Then

         'Data grid binding
    
        End If
    End Sub
    

    如果是 c#,您可以使用演示代码项目中的 link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2013-11-25
      相关资源
      最近更新 更多