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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.04.2012, 01:18   #1  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Доступ в Аксапту через Web без портала
Добрый день!

Add-in в Visual Studio 2008 позволяет создавать аксаптоподобные проекты, внутри которых есть возможность создавать controls и web-parts, которые потом можно разместить на портале Аксапты. Либо импортировать из портала объекты, изменить их и снова залить на портал.

Все это очень хорошо, кроме того, что мы привязаны к SharePoint и к Порталу.

Если взять и создать проект asp.net обычного типа, то панель объектов Аксапты останется и можно сделать следующее: создать AxDataSource, размещенный внутри *.aspx файла и вывести данные либо в стандартный грид, либо в Ax-грид.

Далее, если запустить на выполнение описанную страницу с гридом ИЗ VISUAL STUDIO, данные из Аксапты, соответствующие DataSet в Аксапте и служащие источником данных для DataSource в Visual Studio, вполне нормально отобразятся в браузере.
Если же данный проект разместить на IIS 7.0, то возникнет ошибка открытия сессии в бизнесс-коннекторе Аксапты.

Если же посмотреть трассировку, то видно, что по мере выполнения, программа обращается к библиотеке SharePoint.
Это наводит на грустные мысли, что система безопасности бизнес-коннектора не может работать не через SharePoint.

Так ли это?

Оно понятно, что, если бы, без особых усилий, создав контрол на страничке asn.net, мы бы получали свободный доступ в Аксапту, это было бы просто дырой в безопасности системы, но .net вполне умеет работать с виндовыми пользователями, вроде бы...

Может быть, если доступ в Аксапту с простых страничек возможен, кто-нибудь поделится правильными настройками IIS 7.0 для того, чтобы странички отображались с веб-сервера?
Старый 08.04.2012, 13:51   #2  
BOAL is offline
BOAL
Участник
Аватар для BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
621 / 453 (17) +++++++
Регистрация: 28.04.2003
Адрес: Москва
Делали порталы на АХ 3 и 4 без шарепоинта, только на асп.Нет
На ах2009 все тоже будет работать без проблем.
Но какие-то готовые контрольки типа грида-датасорса АХ могут не работать, пишутся свои под это дело.

Так что все реализуемо, если есть потребность
За это сообщение автора поблагодарили: Narayana (1).
Старый 10.04.2012, 19:34   #3  
nikos2001 is offline
nikos2001
Участник
 
25 / 27 (1) +++
Регистрация: 23.02.2008
Аксаптовский проект в Visual Studio и есть обычный.net 3.5 website project, чей файл web.config расширен ссылками на ассамблеи и выражения Microsoft.Dynamics.*

На странице AxWebPartPage.aspx вы можете установить ManagedContentItem для уже находящейся там AxUserControlWebPart и нажать на кнопочку F5 для запуска/отладки сайта. При этом предварительно в проект из Аксапты нужно добавить вызываемый UserControl.

<dynamics:AxUserControlWebPart ID="Customers" ManagedContentItem="Tutorial_Customers" runat="server" />

AX .Net Connector будет имперсонализировать пользователя Windows.
За это сообщение автора поблагодарили: Narayana (1).
Старый 11.04.2012, 11:44   #4  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от nikos2001 Посмотреть сообщение
Аксаптовский проект в Visual Studio и есть обычный.net 3.5 website project, чей файл web.config расширен ссылками на ассамблеи и выражения Microsoft.Dynamics.*

На странице AxWebPartPage.aspx вы можете установить ManagedContentItem для уже находящейся там AxUserControlWebPart и нажать на кнопочку F5 для запуска/отладки сайта. При этом предварительно в проект из Аксапты нужно добавить вызываемый UserControl.

<dynamics:AxUserControlWebPart ID="Customers" ManagedContentItem="Tutorial_Customers" runat="server" />

AX .Net Connector будет имперсонализировать пользователя Windows.

Щас прям попробую!
Старый 12.04.2012, 00:24   #5  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от nikos2001 Посмотреть сообщение
Аксаптовский проект в Visual Studio и есть обычный.net 3.5 website project, чей файл web.config расширен ссылками на ассамблеи и выражения Microsoft.Dynamics.*

На странице AxWebPartPage.aspx вы можете установить ManagedContentItem для уже находящейся там AxUserControlWebPart и нажать на кнопочку F5 для запуска/отладки сайта. При этом предварительно в проект из Аксапты нужно добавить вызываемый UserControl.

<dynamics:AxUserControlWebPart ID="Customers" ManagedContentItem="Tutorial_Customers" runat="server" />

AX .Net Connector будет имперсонализировать пользователя Windows.

Спасибо большое, все получилось!
Правда, не сразу.
Есть еще один тонкий момент... самописное asp.net приложение должно находиться в одном пуле приложений с порталом Аксапты на IIS.
Старый 12.04.2012, 08:29   #6  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
На самом деле, как оказалось, все проще.

Создаем пустой сайт в IIS 7.0
В Autentication для сайта выбираем или Basic Autentication, или Windows Autentication.
В Basic settings Устанавливает для сайта пул приложения тот же, что и для портала Аксапты.
Создаем обычный asp.net проект.
Из панели инструментов Аксатпы перетаскиваем на Default.aspx AxDataSource и выбираем для него DataSet из Аксапты.
Из панели инструментов Аксапты перетаскиваем на Default.aspx AxGridView и устанавливаем в нем ранее оговоренный DataSet и DataMember.
Делаем привязку сайта к доменному имени.

...и все работает и из локальной сети, и из интернета.
Старый 22.07.2013, 20:00   #7  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Как при этом достучаться до текущей сессии(чтобы вызывать методы AX классов)?
То есть, судя по мануалам, чтобы вызывать методы классов, нужно получить тек сессию след образом :
X++:
private ISession AxSession
    {
        get
        {
            AxBaseWebPart webpart = AxBaseWebPart.GetWebpart(this);
            return webpart == null ? null : webpart.Session;
        }
    };
но, если на страницу просто кинуть axDataDource и AxGridView, то getWebpart всегда возвращается Null(тк webpart ест-но никто не создавал)
Вы,может быть, используете "Dynamics Ax webpart page" как шаблон для страниц сайта?
Старый 22.07.2013, 20:41   #8  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от IKA Посмотреть сообщение
Как при этом достучаться до текущей сессии(чтобы вызывать методы AX классов)?
То есть, судя по мануалам, чтобы вызывать методы классов, нужно получить тек сессию след образом :
X++:
private ISession AxSession
    {
        get
        {
            AxBaseWebPart webpart = AxBaseWebPart.GetWebpart(this);
            return webpart == null ? null : webpart.Session;
        }
    };
но, если на страницу просто кинуть axDataDource и AxGridView, то getWebpart всегда возвращается Null(тк webpart ест-но никто не создавал)
Вы,может быть, используете "Dynamics Ax webpart page" как шаблон для страниц сайта?
Последние свои эксперименты закончил как раз на этом месте разбирательств с сессиями, но уже забыл, чем они закончились.
Перестал экспериментировать, потому что понял, что делать сайты с прямым доступом в АОС или базу Аксапты, это не очень хорошая идея.
Все разумное, что можно сделать напрямую в Аксапте через веб, более-менее охвачено в портале. Что не охвачено, довольно просто дописать в том же портале.
А вот делать интернет-магазин или сайт общего пользования, который просто отображает данные из Аксапты, это не есть гуд.
Сейчас думаю, что самое лучшее, это все-таки синхронизация отдельного решения интернет-магазина с Аксаптой.
Если у вас даже маленькая задача с очень узким функционалом, то сдается мне, что лучше сделать для него свою базу, написать странички стандартными и простыми ASP.NET приемами, а потом сделать простую отдельную утилитку, которая таскает данные из одной базы в другую. Может быть, даже через АОС.

Но, в любом случае, если вспомню что-то про сессии, напишу. Как-то там все не очень сложно оказалось. Мало того, если вы добавляете на страницу элементы, которые изначально есть на шаблонах AxWebPartPage, то сессия открывается автоматически. Или, может быть, открывается, когда вы добавляете Аксаптовский ДатаСорс... не помню... Смешное в другом месте. Если вы страницу обновляете, то добавляются новые сессии, а старые не закрываются. Кстати, в Аксапте есть форма текущих пользователей, - там можно посмотреть открытые сессии.

При открытии Аксаптовской веб-страницы создается один обычный пользователь и несколько веб-пользователей.
Думаю, лучше поэкспериментировать...
Старый 23.07.2013, 13:09   #9  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Интересно, какой метод вы придумали. Я, вроде, нашла сегодня работающий способ.
Если кому понадобится:
X++:
myDS.GetDataSet().DataSetRun.AxaptaAdapter.CallStaticClassMethod() ;
( где myDS - мой AxDataSource )

Описаных лишних сессий при обновлении страниц пока не наблюдаю, но спасибо за предупреждение.

Последний раз редактировалось IKA; 23.07.2013 в 13:13.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Доступ к Outlook из web - портала magnetica DAX: Программирование 6 07.07.2006 16:05
Лучшая ОС для Web-портала Zman DAX: Администрирование 1 07.02.2005 15:28
Просмотр отчетов Axapta через WEB OliaM DAX: Функционал 17 24.01.2005 23:46
WEB-Доступ VvV DAX: Функционал 8 18.09.2002 16:55
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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