|
|
#4 |
|
Участник
|
Вопрос к специалистам по ASP.NET
Попробовал открыть форму "Активные пользователи" в Аксапте и посмотреть, что происходит, когда на тестовой asp.net странице я пытаюсь вызвать метод Logon() из Аксаптовского класса Axapta, лежащего в сборке Microsoft.Dynamics.BusinessConnectorNet .
Оказалось, что сессия с Бизнес-коннектором честно устанавливается, но при этом, присутствующий на asp.net странице Аксаптовский контрол AxDataSource эту сессию не находит. Дальше интереснее. Если заменить родной пул приложений сайта на пул приложения работающего на SharePoint Аксаптовского портала, то можно увидеть следующее... Сессия создается еще до загрузки какой либо страницы с сайта! То же самое происходит, когда мы открываем тестовый сайт в Visual Studio 2008. Сессия опять же создается еще до запуска какой либо страницы. Все это наводит на мысль, что всегда инициализация контрола AxDataSorce происходит ДО вызова любого метода, вызванного событием на asp.net странице, в одном из которых я использую Logon(). То есть, получается, что у нас должен быть создан класс C#, который не привязан ни к одной странице и один из методов этого класса должен запускаться по событию не на странице, а по событию IIS. Например, по любому запросу любой страницы из браузера клиента. Дело в том, что веб-приложение кардинально отличается от виндовс-приложения тем, что у веб-приложения нет метода Main(). Соответсвенно, нужно как-то извратиться, чтобы установить сессию с Аксаптой один раз, когда клиент зашел на сайт. Далее, держать ее включенной все время, пока он запрашивает страницы и, наконец, завершить, когда клиент ушел с сайта. Вот тогда, наверное, AxDataSource всегда будет работать. Попытки посмотреть, как это устроено в Портале на SharePoint, ни к чему не приводят. Там все закрыто и посмотреть код невозможно. Получается, что в обычных asp.net приложениях все подключения к данным производятся путем настройки ConnectionString в web.config сайта. В традиционных windows-приложениях с помощью Logon() и далее работой только с записями отдельных таблиц, но не с Аксаптовским DataSet (судя по хелпу) А вот использование Data Source в плане интеграции с веб-приложениями нигде не документируется. Вопрос к знатокам, - как заставить работать код в классе, не привязанный к конкретной странице не по событиям страницы и в каком NameSpace находятся обработчики событий IIS, к которым можно было бы привязать метод с вызовом Logon() ? |
|
|
| Теги |
| asp.net |
|
|
|