Служба WCF не возвращает коллекцию в веб-приложении

Моя служба 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, указанный ниже

введите описание изображения здесь

Что не так с реализацией. Любая помощь?

РЕДАКТИРОВАТЬ:

Он работает для простого вызова службы без списка. Думаю, проблема может быть в возврате коллекции. Я нашел похожие вопросы Здесь. Но многого от этого не получил.


person Rajaram Shelar    schedule 03.04.2013    source источник
comment
во время отладки вы проверяли переменную в непосредственном окне или в окне быстрого просмотра? Также проверьте, включен ли режим отладки приложения и не находится ли оно в режиме выпуска. (Configuration Manager)   -  person Pradip    schedule 03.04.2013
comment
да, есть тег `‹ compilation debug = true targetFramework = 4.0 / ›` в web.config   -  person Rajaram Shelar    schedule 03.04.2013
comment
проблема в количестве возвращаемых строк. Однажды у меня была именно такая проблема. попробуйте ограничить запрос определенным количеством строк, а затем попробуйте .. как rownum ‹1000 .. в моем случае это помогло. и, очевидно, это неправильный способ реализации, но он даст вам четкое представление о том, происходит ли это из-за данных, которые возвращает запрос, или нет. Пожалуйста, дайте мне знать.   -  person Pradip    schedule 03.04.2013
comment
У меня получается всего 12 рядов. Это не проблема с данными   -  person Rajaram Shelar    schedule 03.04.2013
comment
Я вижу ... вы проверяли, запускается ли завершенная функция этой прокси-функции или нет.   -  person Pradip    schedule 03.04.2013
comment
Есть ли у класса SurveyQuestion атрибут DataContract? Если нет, то, вероятно, он не сериализуется.   -  person Andy Nichols    schedule 03.04.2013
comment
@ Энди Николс: Да, это правильно дано.   -  person Rajaram Shelar    schedule 03.04.2013
comment
@Ons: Где существует метод oncompleted, я не нашел в прокси.   -  person Rajaram Shelar    schedule 03.04.2013
comment
проверьте ответ ниже.   -  person Pradip    schedule 03.04.2013


Ответы (2)


У меня аналогичная проблема с этим, потому что ссылки добавляются неправильно, и я изменил файл reference.cs. Таким образом, данные не собираются правильно, если в приложении разные пространства имен. Просто проверьте пространства имен в своем приложении. Посмотрите, имеет ли один из классов в вашем приложении другое пространство имен, чем другие

person Kitty    schedule 04.04.2013

Все, что вам нужно сделать, это добавить завершенную функцию, а затем добавить к ней источник данных сетки.

в загрузке страницы добавить

AddHandler client.GetEndorsementCompleted, AddressOf GetEndorsement

затем добавьте следующую функцию, чтобы запустить асинхронную функцию.

Private Sub GetEndorsement (ByVal sender As Object, ByVal e As SR.GetEndorsementCompletedEventArgs) Если не e.Result.Equals (Nothing), то

     'Data grid binding

    End If
End Sub

В случае C # вы можете использовать это ссылка из проекта кода, демонстрирующего

person Pradip    schedule 03.04.2013