25.09.2007, 18:20 | #1 |
Участник
|
Использование COM Connector'a в службах Windows
Axapta 3.0 SP4.
Вопрос пограничный: про Аксапту и сторонние программы. Есть приложение на C#. Приложение состоит из двух частей. Клиентская часть приложения делает запрос серверной части на Аксаптовские данные. Серверная часть с помощью Axapta COM Connector забирает эти данные и передаёт клиенту. Изначально серверная часть была реализована как Console Application. Всё достаточно четко работало. Но при попытке реализовать серверную часть как службу Windows возникли проблемы. Служба создаётся, запускается, но в момент вызова метода сервера на клиенте (для получения данных сервера клиентом используется .NET Remoting и web-сервисы) появляется сообщение: "**** System.Runtime.Remoting.RemotingException - Server encountered an internal error. For more information, turn on customErrors in the server's .config file" Если подключится к серверному процессу в режиме отладки, то момент вылетания в catch определяется в следующем коде: X++: ax = new AxaptaCOMConnector.Axapta2Class(); IDictionary login=(IDictionary)ConfigurationSettings.GetConfig("AxCOMConnectorLogin"); try { ax.Logon2(login["Login"],login["Password"],"","","","",login["AxConfiguration"],false,null,null); } catch(Exception err) { Console.WriteLine(err.Message+login["Login"]+login["Password"]); } "QueryInterface for interface AxaptaCOMConnector.IAxapta2 failed" Вопрос: знает ли кто-нибудь об особенностях использования Axapta COM Connector в службах Windows? Есть ли какие-то ограничения? И вообще, можно ли делать вызовы COM Connector'a в службах Windows? Повторюсь: если серверная часть реализована как Console Application, то клиент получает запрашиваемые им данные. Последний раз редактировалось Кирен; 25.09.2007 в 18:31. Причина: дополнение |
|
25.09.2007, 18:32 | #2 |
Member
|
Я не уверен, но проблема м.б. в седьмом параметре.
Конфигурация читается из реестра из ветки HKCU\... Если на сервере никто не залогонен консольно, то конфигурация просто может не быть обнаружена. По крайней мере в 3.0 была такая проблема при настройке портала. Упс... у вас 3.0. Запутали своим .NET меня. У вас кто-то залогонен, когда работает служба, которая доступается к СОМ-коннектору? Если вы хорошо программируете на C++, попробуйте проверить, доступна ли эта конфигурация для службы, считав значения из системного реестра. Возможно, проблема в этом.
__________________
С уважением, glibs® |
|
25.09.2007, 18:40 | #3 |
Member
|
Смотрите, как логонится портал.
... Ax.Logon2 Ax_DefaultLogon,,,,,,AX_Configuration ... (из файла i_axaptafunctions.asp) А вот объявление переменных-констант ... AX_Configuration = "C:\Inetpub\wwwroot\Portal\Test.axc" ... (из файла i_axapp.asp) PS. Код на VB, я так понимаю. Надеюсь, вам он понятен не в меньшей степени, чем мне.
__________________
С уважением, glibs® Последний раз редактировалось glibs; 25.09.2007 в 18:42. Причина: Уточнение |
|
26.09.2007, 10:04 | #4 |
Участник
|
Было что-то подобное - коннектор не логинился если серверное приложение работает как служба.
Единственный вариант при котором все заработало следующий: 1. При вызове логин в серверном приложении указываю только имя конфигурации X++: Axapta.Logon("","","","com"); |
|
26.09.2007, 10:09 | #5 |
Участник
|
Оффтопик для автора:
Лозунг на холодильнике |
|
26.09.2007, 14:32 | #6 |
Участник
|
...насколько я поняла, проблема в настройках конкретного компа.
А точнее - в кривости установки (регистрации) COM Connector'a. На другом компе служба чудесно работает. Последний раз редактировалось Кирен; 16.01.2008 в 14:23. |
|