Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1

Не передаются данные через WCF

22.05.2014, 12:26. Показов 3318. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не смотря, что тема связана с WCF, сомневаюсь, что нужно её в тот раздел помещать. Тут скорее всего по сериализации что-то.

Есть структура классов:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
    /// <summary>
    /// Содержит результат операции запроса
    /// </summary>
    /// <typeparam name="TDataValue"></typeparam>
    [DataContract]
    [KnownType(typeof(BaseQueryOperationResult<,>))]
    public class BaseOperationResult<TDataValue>
    {
        public BaseOperationResult(TDataValue data, string exceptionMessage)
        {
            Data = data;
            Error = exceptionMessage;
        }
 
        /// <summary>Результат</summary>
        [DataMember]
        public TDataValue Data { get; protected set; }
 
        /// <summary>Текст ошибки, возвращается, если возникло исключение</summary>
        [DataMember]
        public string Error { get; protected set; }
    }
 
    [DataContract]
    [KnownType(typeof(DbQueryOperationResult<>))]
    public class BaseQueryOperationResult<TQueryResult, TDataValue> : BaseOperationResult<TDataValue>
    {
        public BaseQueryOperationResult(TQueryResult result, TDataValue data, string exceptionMessage)
            : base(data, exceptionMessage)
        {
            Result = result;
        }
 
        /// <summary>
        /// Содержит результат операции доступа к базе данных (какая-то вспомогательная информация)
        /// </summary>
        [DataMember]
        public TQueryResult Result { get; set; }
    }
 
    /// <summary>
    /// 
    /// </summary>
    /// <typeparam name="TData"></typeparam>
    [DataContract]
    public class DbQueryOperationResult<TData> : BaseQueryOperationResult<DbOperationResult, TData>
    {
        public DbQueryOperationResult(DbOperationResult result, TData data, string exceptionMessage)
            : base(result, data, exceptionMessage)
        {
        }
    }
C#
1
2
3
4
5
6
7
    /// <summary>Уровень доступа пользователя</summary>
    public enum PermissionLevel
    {
        User = 3,
        Admin = 2,
        SuperUser = 1
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    /// <summary>Пользователь</summary>
    [DebuggerDisplay("Id = {Id}, Name = {Name}")]
    [DataContract]
    public class User : ICloneable<User>
    {
        /// <summary>Идентификационный номер в базе данных (Id)</summary>
        [DataMember]
        public int Id { get; set; }
 
        /// <summary>Имя пользователя</summary>
        [DataMember]
        public string Name { get; set; }
 
        /// <summary>Разрешения</summary>
        [DataMember]
        public PermissionLevel Perms { get; set; }
 
        public User Clone()
        {
            return new User { Id = Id, Name = Name, Perms = Perms };
        }
    }
C#
1
2
3
4
5
6
    [ServiceContract(CallbackContract = typeof(IDataServiceCallback), SessionMode = SessionMode.Required)]
    public interface IDataService
    {
        [OperationContract]
        DbQueryOperationResult<User[]> GetAllUsers();
    }
C#
1
2
3
4
5
6
7
8
9
10
11
    [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant, InstanceContextMode = InstanceContextMode.PerSession)]
    internal class DataService : IDataService
    {
        private readonly Database.Database _database = Database.Database.Instance;
 
        public DbQueryOperationResult<User[]> GetAllUsers()
        {
            var users = _database.GetAllUsers();
            return new DbQueryOperationResult<User[]>(DbOperationResult.Success, users, string.Empty);
        }
    }
При вызове сервиса DbQueryOperationResult в свойстве Data возвращает null

Вылетает исключение CommunicationException:
Исключение типа "System.ServiceModel.CommunicationExcept ion" возникло в mscorlib.dll, но не было обработано в коде пользователя
{"Сервер не предоставил значащий ответ. Это может быть вызвано несоответствием контракта, преждевременным завершением сеанса или внутренней ошибкой сервера."}
StackTrace
Server stack trace:
в System.ServiceModel.Channels.ServiceChan nel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChan nelProxy.InvokeService(IMethodCallMessag e methodCall, ProxyOperationRuntime operation)
в System.ServiceModel.Channels.ServiceChan nelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
в System.Runtime.Remoting.Proxies.RealProx y.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
в System.Runtime.Remoting.Proxies.RealProx y.PrivateInvoke(MessageData& msgData, Int32 type)
в BSU.API.Communication.IDataService.GetAl lUsers()
в BSU.Controls.Events.ViewModel.EventLogVi ewModel.<TryConnectAndToGetData>b__1() в c:\Users\dmb-s_000\Documents\Visual Studio 2013\Projects\BsuProject\BSU.Controls\Ev ents\ViewModel\EventLogViewModel.cs:стро ка 140
в System.Threading.Tasks.Task`1.InnerInvok e()
в System.Threading.Tasks.Task.Execute()
Добавлено через 1 минуту
При вызовет такого кода вылетает исключение:
C#
1
2
3
4
5
            DataContractSerializer testSerializer = new DataContractSerializer(typeof(DbQueryOperationResult<User[]>));
            using (MemoryStream stream = new MemoryStream())
            {
                testSerializer.WriteObject(stream, new DbQueryOperationResult<User[]>(DbOperationResult.Success, users.ToArray(), string.Empty));
            }
InvalidDataContractException
Исключение типа "System.Runtime.Serialization.InvalidDat aContractException" возникло в System.Runtime.Serialization.dll, но не было обработано в коде пользователя

Дополнительные сведения: Ошибка при получении известных типов для типа "BSU.API.Data.DbQueryOperationResult `1[TData]". Этот тип не должен быть открытым или частичным базовым классом.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.05.2014, 12:26
Ответы с готовыми решениями:

В Debug режиме в VS-2012 данные передаются нормально, но при запуске без дебага возникают ошибки и данные не передаются
Всем доброе время суток. Есть проект, работающий на ASP.NET MVC с использованием Entity Framework. Есть подключаемая база данных, из неё...

Не передаются данные через TCP
static int port = 8005; // порт для приема входящих запросов static void Main(string args) { ...

Как получить данные от wcf сервиса через SOAP
Имеется wcf service. Необходимо вызвать его метод и получить данные. Возможно ли это сделать через WebClient, например?

3
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
22.05.2014, 12:40
Ошибку бы, которая на самом сервисе произошла...
И класс DbQueryOperationResult было бы неплохо увидеть.

Добавлено через 1 минуту
Ну вот, уже проясняется, посмотрим на класс DbQueryOperationResult...
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
22.05.2014, 12:53  [ТС]
Он есть в первом сообщении.
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
22.05.2014, 13:09
Моя ошибка, не до конца скопировал...

Всё идеально...
Собрал проект на всякий.
Вложения
Тип файла: rar DataService.rar (20.2 Кб, 21 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2014, 13:09
Помогаю со студенческими работами здесь

Не передаются данные через ajax
Все привет. Не могу понять в чем дело передаю данные вот так var s=&quot;1111&quot;; $.ajax({ type: &quot;POST&quot;, ...

Почему-то не передаются данные через Ajax
Есть следующий код JS, который ловит нажатие на кнопку и отправляет данные data-id в обработчик: $(document).ready(function() { ...

Не передаются данные в БД!
Приветствую! Я пока еще зеленый и нуждаюсь в Вашей помощи. При попытке отправить данные в таблицу БД ничего не происходит, в чем...

Не передаются данные в БД из формы
Код подключения БД &lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset=&quot;windows-1251&quot;&gt; &lt;title&gt;Документ без названия&lt;/title&gt; ...

не передаются данные из JS в PHP
Всем привет. Народ, есть сайт: http://bodys.top/ При клике на кнопку &quot;В корзину&quot; срабатывает jQuery-метод: // Добавление новой покупки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru