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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.11.2016, 15:56   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
.NET-сборка и выполнение на стороне сервера
Всем доброго дня.
Версия AX4.
Возникла проблема следующего плана. Не удается получить работающий код при переносе его с клиента на сервер.
Манипуляции провожу следующие:
  • Компилируем dll-библиотеку
  • Копируем ее в папку client\bin
  • Копируем ее же в папку server\DEV\bin (DEV - название инстанса)
  • Регистрируем с указанием библиотеки в папке server
  • Компилируем класс со свойством RunOn: CalledFrom - УРА! Работает!
  • Компилируем класс со свойством RunOn: Server - ошибка при запуске класса
Пример класса C#:
X++:
using System;
using System.Collections.Generic;
using System.Text;

namespace PPO.QC
{
    public class Service
    {
        protected int a;
        protected int b;

        public Service(int _a, int _b)
        {
            a = _a;
            b = _b;
        }

        public String hello(String name)
        {
            return "Hello, " + name;
        }

        public int summary()
        {
            return a + b;
        }
    }
}
Пример класса в AX:
X++:
public void test()
{
    PPO.QC.Service  svc;
    str             hello;
    int             summary;
    ;

    new InteropPermission(InteropKind::CLRInterop).assert();

    svc = new PPO.QC.Service(5, 7);
    hello = svc.hello("Denis");
    summary = svc.summary();

    CodeAccessPermission::revertAssert();

    info(hello);
    info(strfmt("The summary is %1", summary));
}
Подскажите, что делаю не так? Чего не хватает?
__________________
// no comments
Старый 17.11.2016, 15:59   #2  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цель задачи: убить dll в папке client\bin и использовать сборку только на AOS (их кстати 5 штук у нас в продакшне), дабы не копировать библиотеку на каждую клиентскую машину.
__________________
// no comments
Старый 17.11.2016, 16:20   #3  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Что за ошибка? И в чем проблема с копированием библиотеки на клиентские машины (см. класс SysFileDeployer)?
Старый 17.11.2016, 18:09   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от Napalm Посмотреть сообщение
Что за ошибка? И в чем проблема с копированием библиотеки на клиентские машины (см. класс SysFileDeployer)?
Clr object is not initialized.
Object 'CLRObject' could not be created
Проблемы раскидать библиотеку нет, ищу в чем проблема переделать в серверный класс)))
__________________
// no comments
Старый 17.11.2016, 19:06   #5  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Может, ваша сборка ссылается на что-то еще, что есть только на клиенте? Если написать простенькое консольное .NET-приложение в стиле приведенного выше "Hello Denis", оно запустится на сервере? Если нет и дело в зависимостях сборки, то можно будет хотя бы увидеть внятное описание исключения.
Старый 17.11.2016, 22:27   #6  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Можно запустить http://www.dependencywalker.com/ на клиенте и поглядеть вдруг есть зависимости о которых говорит gl00mie
Старый 17.11.2016, 22:48   #7  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Самое лучшее регистрировать в GAC если сборка со строгим именем.
Но по идее в bin на AOS обязано работать, только надо рестартовать AOS службу.

Возможно именно рестарта и не хватает.
За это сообщение автора поблагодарили: dech (1).
Старый 18.11.2016, 09:24   #8  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Ошибка оказалась донельзя глупой. Когда тестировал, из папки client в папку server DLL-библиотеку я перемещал, а не копировал. Хоть и с предупреждением, что не оттуда, но reference брался и работал на клиенте, а для серверных классов выдавал ошибку.
Логично было ожидать, что если DLL в папке server, то класс-пользователь на стороне сервера должен компилироваться и работать. Все-таки DLL нужно хранить одновременно в двух папках.
Возникает неуверенность, будет ли вообще работать серверный класс в трёхзвенке на клиентской машине без этой библиотеки, если она будет храниться на АОСах?
__________________
// no comments
Старый 18.11.2016, 11:25   #9  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Цитата:
Сообщение от dech Посмотреть сообщение
Возникает неуверенность, будет ли вообще работать серверный класс в трёхзвенке на клиентской машине без этой библиотеки, если она будет храниться на АОСах?
Для компиляции класса DLL нобходима на клиенте, для выполнения - там, где класс выполняется
За это сообщение автора поблагодарили: gl00mie (1), dech (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
MSXML2.XMLHTTP на стороне сервера (RunOn=Server) samolalex DAX: Программирование 2 29.10.2013 11:10
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
fed: Net requirements update in MRP Module and Working Set of MRP Blog bot DAX Blogs 14 08.05.2012 13:09
AX.NET: интеграция .NET-приложений с Аксаптой и (будущие) возможности облачных вычислений gl00mie DAX: Программирование 2 23.04.2010 00:47
Исполнение методов класса на стороне сервера (AOS)? SnowMan DAX: Программирование 11 28.08.2003 16:15

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

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

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