15.01.2014, 18:26 | #1 |
Участник
|
Передача CLRObject с сервера на клиент
Возникла проблема с передачей CLRObject из серверного метода на клиент.
Вернее объект передается, но видимо не правильно так как при передаче его в метод падает клиент. Если CLRobject создать на клиенте то все работает без проблем. Есть идеи что не так? |
|
15.01.2014, 19:00 | #2 |
Участник
|
Сам нашел, видимо этого сделать не получится
http://msdn.microsoft.com/en-us/libr...97(AX.50).aspx |
|
15.01.2014, 19:05 | #3 |
Участник
|
Попробуйте как-нибудь провести сериализацию-десериализацию или передавать не CLRObject, а его составляющие, с помощью которых можно воссоздать CLRObject на клиенте.
__________________
// no comments |
|
15.01.2014, 19:32 | #4 |
Участник
|
|
|
15.01.2014, 23:29 | #5 |
Участник
|
Так и не нашел каким образом сделать сериализацию System.Net.ICredentials.
|
|
16.01.2014, 14:15 | #6 |
Участник
|
Цитата:
X++: System.Net.ICredentials iCredentials = new System.Net.ICredentials(); str iCredentialsXml; System.Type type; iCredentialsXml = DOCommonDataManager::serialize(iCredentials); type = System.Type::GetType('System.Net.ICredentials, System', true); iCredentials = DOCommonDataManager::deserialize(type, iCredentialsXml); Последний раз редактировалось Morpheus; 16.01.2014 в 14:19. |
|
16.01.2014, 15:00 | #7 |
Участник
|
Цитата:
Сообщение от Morpheus
X++: System.Net.ICredentials iCredentials = new System.Net.ICredentials(); str iCredentialsXml; System.Type type; iCredentialsXml = DOCommonDataManager::serialize(iCredentials); type = System.Type::GetType('System.Net.ICredentials, System', true); iCredentials = DOCommonDataManager::deserialize(type, iCredentialsXml); X++: DOCommonDataManager Последний раз редактировалось maldini; 16.01.2014 в 15:03. |
|
16.01.2014, 16:56 | #8 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: maldini (1). |
16.01.2014, 18:17 | #9 |
Участник
|
Сериализация простого объекта получается
X++: type = System.Type::GetType('System.String'); serializer = new System.Xml.Serialization.XmlSerializer(type); X++: type = System.Type::GetType('System.Net.ICredentials'); serializer = new System.Xml.Serialization.XmlSerializer(type); Всем спасибо. Затея была неудачной. Скорее всего не все объекты возможно сериализовать. Последний раз редактировалось maldini; 16.01.2014 в 18:48. |
|
16.01.2014, 19:02 | #10 |
Участник
|
Цитата:
X++: System.Type[] extraTypes = new System.Type[1](); extraTypes.SetValue(System.Type::GetType('ExtraType, ExtraTypeDLL', true), 0); DOCommonDataManager::deserialize(type, _objectXml, extraTypes); |
|
16.01.2014, 22:08 | #11 |
Участник
|
Цитата:
Сообщение от Morpheus
У вас проблема с сериализацией или десериализацией? Если второе, то обратите внимание все ли типы сериализованных объектов предоставлены для десериализации.
X++: System.Type[] extraTypes = new System.Type[1](); extraTypes.SetValue(System.Type::GetType('ExtraType, ExtraTypeDLL', true), 0); DOCommonDataManager::deserialize(type, _objectXml, extraTypes); |
|
17.01.2014, 02:49 | #12 |
Участник
|
Это интерфейс, а не класс.
System.Net.ICredentials http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx У интерфейса всего 1 метод - GetCredential(). Возвращает " NetworkCredential object that is associated with the specified URI, and authentication type." На сервере - Получите NetworkCredential из метода System.Net.ICredentials.GetCredential(). http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx Передайте на клиент параметры из NetworkCredential. Создайте NetworkCredential на клиенте используя эти параметры.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
17.01.2014, 10:10 | #13 |
Участник
|
Цитата:
Сообщение от Alex_KD
Это интерфейс, а не класс.
System.Net.ICredentials http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx У интерфейса всего 1 метод - GetCredential(). Возвращает " NetworkCredential object that is associated with the specified URI, and authentication type." На сервере - Получите NetworkCredential из метода System.Net.ICredentials.GetCredential(). http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx Передайте на клиент параметры из NetworkCredential. Создайте NetworkCredential на клиенте используя эти параметры. Код: System.Net.ICredentials credentials В данную переменную с помощью статического метода Код: System.Net.CredentialCache::get_DefaultCredentials(); Последний раз редактировалось maldini; 17.01.2014 в 10:17. |
|
17.01.2014, 15:40 | #14 |
Участник
|
Вы пытаетесь решить некую локальную проблему (передача CLRObject из серверного метода на клиент). Может если вы опишите что вы патаетесь сделать на более высоком уровне, то кто то сможет помочь? Зачем объект надо передавать на клиента, почему нельзя сделать все на сервере? Или все на клиенте? Или может принципиально вы не в ту стороны копаете.....
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
17.01.2014, 17:06 | #15 |
Участник
|
Цитата:
Сообщение от Alex_KD
Вы пытаетесь решить некую локальную проблему (передача CLRObject из серверного метода на клиент). Может если вы опишите что вы патаетесь сделать на более высоком уровне, то кто то сможет помочь? Зачем объект надо передавать на клиента, почему нельзя сделать все на сервере? Или все на клиенте? Или может принципиально вы не в ту стороны копаете.....
|
|
|
|