26.06.2008, 14:04 | #1 |
Участник
|
.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 |
Боец
|
Положить и зарегить dll на всех клиентах.
|
|
26.06.2008, 15:11 | #3 |
Участник
|
|
|
26.06.2008, 16:14 | #4 |
Боец
|
Ну как так? должен же Reference быть виден... Вы его пересоздавали в AOT после регистрации dll?
|
|
26.06.2008, 19:15 | #5 |
MCTS
|
попробуйте еще в GAC добавить эту сборку
|
|
26.06.2008, 19:21 | #6 |
Участник
|
накатил 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/'); |
|
26.06.2008, 19:24 | #7 |
MCTS
|
это у вас разрешений на запуск на сервере нет, надо делать примерно так:
X++: CodeAccessPermission permission = new InteropPermission(InteropKind::ClrInterop); ; permission.assert(); // потом код new() |
|
26.06.2008, 19:38 | #8 |
Участник
|
Цитата:
InteropPermission permission; ; permission = new InteropPermission(InteropKind::ClrInterop); permission.assert(); Всё равно Объект "CLRObject" не может быть создан Объект Clr не инициализирован. |
|
26.06.2008, 19:39 | #9 |
Administrator
|
Угу.... и переносить код на клиент... Либо запускать аос с параметром -caslevel=disable - чтобы отключать эту проверку везде....
__________________
Возможно сделать все. Вопрос времени |
|
26.06.2008, 19:46 | #10 |
MCTS
|
В приложении к документу "Install and Configure a Microsoft Dynamics AX Enterprise Portal server.doc" описаны способы решения проблемы с похожими симптомами. Не помогло в данном случае?
|
|
26.06.2008, 19:48 | #11 |
MCTS
|
а теперь ошибка скорее всего из-за GAC, добавьте ее на сервере
Цитата:
и переносить код на клиент...
Последний раз редактировалось Eldar9x; 26.06.2008 в 19:52. |
|
26.06.2008, 19:54 | #12 |
Участник
|
|
|
26.06.2008, 19:58 | #13 |
MCTS
|
и на EP сервере в GAC сборка есть? И, действительно, что мешает запускать класс на клиенте?
Последний раз редактировалось Eldar9x; 26.06.2008 в 20:06. |
|
26.06.2008, 20:08 | #14 |
Участник
|
|
|
26.06.2008, 20:10 | #15 |
Участник
|
|
|
26.06.2008, 20:26 | #16 |
MCTS
|
Значит надо запустить класс на 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. Цитата:
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 |
очами вижу
|
Вообще-то, SPSite и прочие Sharepoint объекты могут создаваться исключительно на той машине, на которой развернут WSS. Если нужен доступ к этим объектам с других машин - для этого предусмотрены веб-сервисы.
Чтобы SP-классы использовать в Аксапте, необходимо, чтобы код выполнялся на машине с WSS. Если на AOS не развернут EP, то единственный выход - это установить клиент Аксапты на EP-сервере и выполнять метод на клиенте. |
|
|
За это сообщение автора поблагодарили: GromRom (1). |
27.06.2008, 11:17 | #18 |
Участник
|
Цитата:
Сообщение от 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 |
Участник
|
Цитата:
Сообщение от RumataEstor
Вообще-то, SPSite и прочие Sharepoint объекты могут создаваться исключительно на той машине, на которой развернут WSS. Если нужен доступ к этим объектам с других машин - для этого предусмотрены веб-сервисы.
Чтобы SP-классы использовать в Аксапте, необходимо, чтобы код выполнялся на машине с WSS. Если на AOS не развернут EP, то единственный выход - это установить клиент Аксапты на EP-сервере и выполнять метод на клиенте. Сейчас конфигурация выглядит так: 1 машина AOS+WSS + .Net BC 2-я машина EP (как следствие есть WSS и .Net BC) При такой конфигурации есть возможность серверным кодом получать досту к SP-объектам? Вы что-то упоянули про Веб-сервисы. Могли бы, пжалйста, привести пример кода, как в Axapta обратиться web-сервисом к объетам SharePoint? Заранее благодарен. |
|
27.06.2008, 12:29 | #20 |
очами вижу
|
Цитата:
Цитата:
Если хотите посмотреть, что вы можете сделать с помощью веб-сервисов, то можете открыть в браузере интересующий сервис (например, для действий со списками 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 |
|
|