AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.06.2008, 14:04   #1  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
? .Net (SharePoint) в DAX4.0
Коллеги!
Я создал класс на MorphicX, в котром обращаюсь к сборке Microsoft.SharePoint, а через неё к объектам Enterprise Portal'а

Проблема в том, что это код распрекрасно работает на том сервере, где развёрнут EP. На любой другой машине он выдаёт ошибку:
Объект Clr не инициилизирован.
Объект "CLRObject" не может быть создан.

X++:
static void main(Args args)
{
     Microsoft.SharePoint.SPSite spSite; // конкреьный узел (определяемый URL)
     Microsoft.SharePoint.SPWeb  spWeb;
     Microsoft.SharePoint.SPListCollection lstColection; //все списки узла
     Microsoft.SharePoint.SPList lstDocLibrary; // искомый список (библитека документов)
     Microsoft.SharePoint.SPListItemCollection itmDocumentsCollection; // документы (элементы библиотеки документов)
     Microsoft.SharePoint.SPListItem  itmDocument;
 
     str strListName;
     str strColumnName;
     str  atpFieldValue;
     str      strFielVlue;
     int iCount;
     int i;
 
     str str_debug_1;
     ;
     spSite = new Microsoft.SharePoint.SPSite('http://v-sp-01/sites/AxPortal/');
     spWeb = spSite.OpenWeb();
     strListName = "Project Documents";
     strColumnName = "Утв";
 
      // получаем коллекцию ВСЕХ списков узла
     lstColection = spWeb.get_Lists();
 
     lstDocLibrary = lstColection.get_Item(strListName); // берём конкретный список (библиотеку) по имени
     itmDocumentsCollection = lstDocLibrary.get_Items(); // берём элементы списка (коллекцию)
     info (strFmt("Site name:%1\n", ClrInterOp::getAnyTypeForObject(spWeb.get_Title())));
 
     info ("Элементы:");
     iCount = itmDocumentsCollection.get_Count();
     for(i=0; i < iCount ; i++)
     {
         itmDocument = itmDocumentsCollection.get_Item(i);
         strFielVlue =  itmDocument.get_Name();
         atpFieldValue = itmDocument.get_Item(strColumnName);
         info (strFmt("\t - %1  Состояние утверждения: %2", strFielVlue, atpFieldValue));
     }
 
 
     // Оcвобождаем объекты
     spSite.Close();
     spWeb.Dispose();
}

В разделе References подключены ссылки на Microsoft.Dynamics.ClrBridge, и на Microsoft.SharePoint

Подскажите, пожалуйста, что надо сделать, что бы код беспрепятственно работал на любой (клиентской) машине?

Последний раз редактировалось GromRom; 26.06.2008 в 14:10.
Старый 26.06.2008, 14:13   #2  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Положить и зарегить dll на всех клиентах.
Старый 26.06.2008, 15:11   #3  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
;)
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Положить и зарегить dll на всех клиентах.
Не помогло.
Но ругается теперь по-другому:

Синтаксическая ошибка. в первой же строке :
Microsoft.SharePoint.SPSite spSite;
Старый 26.06.2008, 16:14   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Ну как так? должен же Reference быть виден... Вы его пересоздавали в AOT после регистрации dll?
Старый 26.06.2008, 19:15   #5  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
попробуйте еще в GAC добавить эту сборку
Старый 26.06.2008, 19:21   #6  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
накатил WSS 3.0 с SP1
Теперь ошибка выглядит иначе:

Сбой запроса на разрешение типа "InteropPermission".
(S)\Classes\InteropPermission\demand
(S)\Classes\CLRObject\new
(S)\Classes\SharePointNodeAcccess_NV\main - line 24

Строка 24 - это
X++:
spSite = new Microsoft.SharePoint.SPSite('http://v-sp-01/sites/AxPortal/');
Перед методом main стоит слово server
Старый 26.06.2008, 19:24   #7  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
это у вас разрешений на запуск на сервере нет, надо делать примерно так:
X++:
    CodeAccessPermission permission = new InteropPermission(InteropKind::ClrInterop);
    ;

    permission.assert();

// потом код new()
Старый 26.06.2008, 19:38   #8  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
Cool
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
это у вас разрешений на запуск на сервере нет, надо делать примерно так:
X++:
    CodeAccessPermission permission = new InteropPermission(InteropKind::ClrInterop);
    ;
 
    permission.assert();
 
// потом код new()
Не помогло.
InteropPermission permission;
;
permission = new InteropPermission(InteropKind::ClrInterop);
permission.assert();

Всё равно
Объект "CLRObject" не может быть создан
Объект Clr не инициализирован.
Старый 26.06.2008, 19:39   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,314 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Угу.... и переносить код на клиент... Либо запускать аос с параметром -caslevel=disable - чтобы отключать эту проверку везде....
__________________
Возможно сделать все. Вопрос времени
Старый 26.06.2008, 19:46   #10  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
В приложении к документу "Install and Configure a Microsoft Dynamics AX Enterprise Portal server.doc" описаны способы решения проблемы с похожими симптомами. Не помогло в данном случае?
Старый 26.06.2008, 19:48   #11  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
а теперь ошибка скорее всего из-за GAC, добавьте ее на сервере

Цитата:
и переносить код на клиент...
по-моему, в случае клиента, эту проверку как раз и не обязательно делать

Последний раз редактировалось Eldar9x; 26.06.2008 в 19:52.
Старый 26.06.2008, 19:54   #12  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
а теперь ошибка скорее всего из-за GAC, добавьте ее на сервере


по-моему, в случае клиента, эту проверку как раз и не обязательно делать
В GAC всё есть. Я запускаю клиент на Сервере AOS. Туда же уже накатил WSS3.0

на EP сервере этот же код работает. Больше нигде.
Старый 26.06.2008, 19:58   #13  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
и на EP сервере в GAC сборка есть? И, действительно, что мешает запускать класс на клиенте?

Последний раз редактировалось Eldar9x; 26.06.2008 в 20:06.
Старый 26.06.2008, 20:08   #14  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
!
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
и на EP сервере в GAC сборка есть? И, действительно, что мешает запускать класс на клиенте?
и на EP сервере есть сборки Microsoft.Dynamics.ClrBridge, и Microsoft.SharePoint
в GAC

и, даже на моей локальной машине.
Старый 26.06.2008, 20:10   #15  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
и на EP сервере в GAC сборка есть? И, действительно, что мешает запускать класс на клиенте?
Что интересно, на EP сервере код выдёт ту же ошибку, что и на остальных машинах, если стоит аттрибут server. Без него код запускается хотя бы на EP машине.
Старый 26.06.2008, 20:26   #16  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Значит надо запустить класс на EP сервере. Как в аксапте это сделать - совсем не понятно. Разве что, ЕР сервер переместить на AOS сервер ... А документ "Install and Configure a Microsoft Dynamics AX Enterprise Portal server.doc" смотрели? Там на самом деле есть похожая проблема:
Цитата:
When you open the Manage Enterprise Portal Deployments form in Microsoft Dynamics AX, you receive the following error message: “Clr object is not initialized.”
Verify that the Ax32.exe.config file exists in the following location on your server that is running Microsoft Dynamics AX: %System Drive%\Program Files\Microsoft Dynamics AX\40\Client\Bin. If the file does not exist, locate it on your Microsoft Dynamics AX DVD (in the \Retail\Bin directory), and copy it to the specified location.
Вот еще - там как раз сборка clrBridge упоминается:
Цитата:
If the problem persists, verify that you entered the <SafeControl> entries that are specified in the “Configure ASP.NET” section of this white paper. After you have verified these items, use the Manage Enterprise Portal Deployments form to enable and update the Web site.

Последний раз редактировалось Eldar9x; 26.06.2008 в 20:37.
Старый 27.06.2008, 10:24   #17  
RumataEstor is offline
RumataEstor
очами вижу
 
84 / 19 (1) ++
Регистрация: 29.04.2008
Адрес: Москва
Вообще-то, SPSite и прочие Sharepoint объекты могут создаваться исключительно на той машине, на которой развернут WSS. Если нужен доступ к этим объектам с других машин - для этого предусмотрены веб-сервисы.

Чтобы SP-классы использовать в Аксапте, необходимо, чтобы код выполнялся на машине с WSS. Если на AOS не развернут EP, то единственный выход - это установить клиент Аксапты на EP-сервере и выполнять метод на клиенте.
За это сообщение автора поблагодарили: GromRom (1).
Старый 27.06.2008, 11:17   #18  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Значит надо запустить класс на EP сервере. Как в аксапте это сделать - совсем не понятно. Разве что, ЕР сервер переместить на AOS сервер ... А документ "Install and Configure a Microsoft Dynamics AX Enterprise Portal server.doc" смотрели? Там на самом деле есть похожая проблема:



Вот еще - там как раз сборка clrBridge упоминается:
Да, этот конфиг уже лежит в нужном месте.
Да, это контрол прописан, как безопасный.

Последний раз редактировалось GromRom; 27.06.2008 в 11:37.
Старый 27.06.2008, 11:37   #19  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
!
Цитата:
Сообщение от RumataEstor Посмотреть сообщение
Вообще-то, SPSite и прочие Sharepoint объекты могут создаваться исключительно на той машине, на которой развернут WSS. Если нужен доступ к этим объектам с других машин - для этого предусмотрены веб-сервисы.

Чтобы SP-классы использовать в Аксапте, необходимо, чтобы код выполнялся на машине с WSS. Если на AOS не развернут EP, то единственный выход - это установить клиент Аксапты на EP-сервере и выполнять метод на клиенте.
Коллега, я развернул службы WSS 3.0 на то же машине, где стоял АОS.
Сейчас конфигурация выглядит так:

1 машина
AOS+WSS + .Net BC

2-я машина
EP (как следствие есть WSS и .Net BC)

При такой конфигурации есть возможность серверным кодом получать досту к SP-объектам?


Вы что-то упоянули про Веб-сервисы. Могли бы, пжалйста, привести пример кода, как в Axapta обратиться web-сервисом к объетам SharePoint?
Заранее благодарен.
Старый 27.06.2008, 12:29   #20  
RumataEstor is offline
RumataEstor
очами вижу
 
84 / 19 (1) ++
Регистрация: 29.04.2008
Адрес: Москва
Цитата:
Сообщение от GromRom Посмотреть сообщение
Коллега, я развернул службы WSS 3.0 на то же машине, где стоял АОS.
Сейчас конфигурация выглядит так:

1 машина
AOS+WSS + .Net BC

2-я машина
EP (как следствие есть WSS и .Net BC)

При такой конфигурации есть возможность серверным кодом получать досту к SP-объектам?
Если вы хотите с 1й машины получать доступ к объектам 2й, то не получится. По-крайней мере, у меня все создаваемые объекты SP работают исключительно с локальным порталом. Возможно, проблема в аутентификации, но мне ее пообедить не удалось.

Цитата:
Сообщение от GromRom Посмотреть сообщение
Вы что-то упоянули про Веб-сервисы. Могли бы, пжалйста, привести пример кода, как в Axapta обратиться web-сервисом к объетам SharePoint?
Заранее благодарен.
К сожалению, я пока не могу предоставить код X++, но как использовать веб-сервисы из Аксапты тут уже обсуждали. Например, здесь: Покорить .NET в DAX чтобы сделать ручным ReportingServices

Если хотите посмотреть, что вы можете сделать с помощью веб-сервисов, то можете открыть в браузере интересующий сервис (например, для действий со списками http://ваш-портал/_vti_bin/lists.asmx), полный список сервисов вы можете посмотреть по адресу Program Files\...путь-к-папке-портала...\ISAPI\*.asmx

Есть справка по веб-сервисам WSS: http://msdn.microsoft.com/en-us/library/ms445760.aspx

Последний раз редактировалось RumataEstor; 27.06.2008 в 12:41.
За это сообщение автора поблагодарили: GromRom (1).
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Arijit Basu: DAX 4.01 .NET Business Connector: Microsoft.Dynamics.BusinessConnectorNet Blog bot DAX Blogs 3 30.09.2008 01:17
DAX4 берет данные из SharePoint - как закодить? Qaz Qwerty DAX: Программирование 3 04.09.2008 05:22
Inside Dynamics AX 4.0: Working with the .NET Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15
Dynamics AX: .Net Adapter and why? Blog bot DAX Blogs 0 26.06.2007 02:54
ALEG: Проект "Фишка недели" и первый пост - Microsoft Dynamics™ AX .NET Business Connector Blog bot DAX Blogs 1 22.11.2006 09:43
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:34.