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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.08.2012, 14:34   #1  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Web Service Sharepoint и вход по имени пользователя чере Net Business Connector
Доброго времени суток!!!
Помогите пожалуйста кто чем может.
Ситуация такая, написал я для того чтобы на EP была возможность использовать технологию Ajax - веб-службу.
Код довольно простой, веб-служба создает net business connector соединение к аксапте и запращивает данные из аксапты из таблицы(в будущем будет вызов методов аксапты) но все бы хорошо если бы не вот такая неприятность.

метод logon на объекте axapta() не отрабатывает, logonAs отрабатывает если указать там конкретного пользователя, что собственно не устраивает, т.е. хотелось бы сделать таким образом чтобы axapta(net bc) запускался под тем пользоваетелем который заходит на узел sharepoint.
Вот собственно код самого сервиса


Код:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using Microsoft.Dynamics.BusinessConnectorNet;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
namespace WebServiceTest
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [System.Web.Script.Services.ScriptService]
 
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class Service1 : System.Web.Services.WebService
    {              
        [WebMethod]
        public DataSet GetCounty(String controlName,String region)
        {
            String result = "";
            Axapta ax;
            Boolean b = true;            
            System.Data.DataTable table = new DataTable("Answer");
            DataColumn                      column;
            DataRow                         row;
            DataSet                         set;
            int countI = 0;
            // Create new DataColumn, set DataType, 
            // ColumnName and add to DataTable.    
            column = new DataColumn();
            column.DataType = System.Type.GetType("System.String");
            column.ColumnName = "controlName";
            column.ReadOnly = true;     
            table.Columns.Add(column);
            column = new DataColumn();
            column.DataType = System.Type.GetType("System.String");
            column.ColumnName = "htmlResult";
            column.ReadOnly = true;
            table.Columns.Add(column);
 
            set = new DataSet();
            set.Tables.Add(table);           
            // Visualize DataSet.                      
            ax = new Axapta();
            System.Net.NetworkCredential nc = new
            System.Net.NetworkCredential("xxxxxxxx", "xxxxx");
            //nc = System.Net.CredentialCache.DefaultCredentials.GetCredential(new Uri("http://test:800/sites/barsaxapta"),"Basic");
 
            try
            {
                ax.LogonAs("xxxxxx","BARS",nc , null, null, null, null);                
            }
            catch (Exception e)
            {
                result = "#Ошибка подключения " + nc.UserName + "\n";
            }
            if (b)
            {
                AxaptaRecord axRecord = ax.CreateAxaptaRecord("AddressCounty");
                axRecord.ExecuteStmt("select CountyId,Name from %1 where %1.StateId == '" + region + "'");
                countI = 0;
                while (axRecord.Found)
                {                   
                    result = result + axRecord.get_Field("CountyId") + "#" + axRecord.get_Field("Name") + "\n";                                          
                    countI++;
                    axRecord.Next();
                }
                axRecord.Dispose();               
                ax.Logoff();
            }
            row = table.NewRow();
            row["controlName"] = controlName;
            row["htmlResult"] = result;
            table.Rows.Add(row);
            return set;
        }
    }
}
Может настроить что то где то надо?
Или есть возможность хотя бы получить эти самые DefaultNetworkCredential потому что не получается...
Пж-ста помогите!!!!
DAX 4.0
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 20.08.2012, 14:41   #2  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
А что за исключение генерируется?

насколько я помню, метод Logon всегда криво работал.
Практика показывает, что лучше завести одного пользователя, под которым будет запускаться сеанс .NET BC. если вам надо запускать методы классов, какая разница под каким пользователем это работает? Если надо параметризироваться под пользователя - передавайте код пользователя в параметре: сэкономите кучу времени и нервов
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
Старый 20.08.2012, 14:42   #3  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от plumbum Посмотреть сообщение
А что за исключение генерируется?

насколько я помню, метод Logon всегда криво работал.
Практика показывает, что лучше завести одного пользователя, под которым будет запускаться сеанс .NET BC. если вам надо запускать методы классов, какая разница под каким пользователем это работает? Если надо параметризироваться под пользователя - передавайте код пользователя в параметре: сэкономите кучу времени и нервов
да думал уже об этом, просто хочеца красиво и универсально. RLS там чтобы накладывался и тд и тп.
просто такое чувство что не логинеца оно в windows, хотя стоит доменная авторизация
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 20.08.2012, 14:48   #4  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
И все таки, что стоит в тексте исключения?

Да, это действительно странно, я давно не работал с .NET BC 2009, но вот как сейчас помню это "неписаное" правило
Проверте также настройки Proxy пользователя в AX.
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
Старый 20.08.2012, 15:06   #5  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от plumbum Посмотреть сообщение
И все таки, что стоит в тексте исключения?

Да, это действительно странно, я давно не работал с .NET BC 2009, но вот как сейчас помню это "неписаное" правило
Проверте также настройки Proxy пользователя в AX.
Текст исключения:
Login error: Failed to logon to Axapta

Администрирование -> настройки -> контроль доступа -> business connector proxy
пользователь стоит
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 20.08.2012, 15:42   #6  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Цитата:
Сообщение от Murlin Посмотреть сообщение
ax.LogonAs("xxxxxx","BARS",nc , null, null, null, null);
а почему последний параметр, где как раз конфигурация должна стоять, null?
Что стоит в параметре user? Proxy-User? зачем вам тогда вообще NetworkCredential, AX врод должна по имени пользователя и домену сама определить...
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
Старый 20.08.2012, 15:44   #7  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от plumbum Посмотреть сообщение
а почему последний параметр, где как раз конфигурация должна стоять, null?
Что стоит в параметре user? Proxy-User? зачем вам тогда вообще NetworkCredential, AX врод должна по имени пользователя и домену сама определить...
нет нет я уже исправил метод на Logon(null,null,null,null) и сообщил вам текст ошибки
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 20.08.2012, 15:54   #8  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
погодите, в любом случае у вас должна быть указана хотя бы конфигурация AOS, вы же все таки к чему то подключаетесь
Если код выполняется на сервере из Web-Сервиса, (ASPX код или что там у вас), то ни о каком Logon речи быть не может: в реальной жизни это служба выполняющая запросы на сервере по мере их поступления. Вы можете "выудить" пользователя из запроса к методу Web-Service и указать его в методе LogonAs
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
За это сообщение автора поблагодарили: Murlin (1).
Старый 20.08.2012, 16:10   #9  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от plumbum Посмотреть сообщение
погодите, в любом случае у вас должна быть указана хотя бы конфигурация AOS, вы же все таки к чему то подключаетесь
Если код выполняется на сервере из Web-Сервиса, (ASPX код или что там у вас), то ни о каком Logon речи быть не может: в реальной жизни это служба выполняющая запросы на сервере по мере их поступления. Вы можете "выудить" пользователя из запроса к методу Web-Service и указать его в методе LogonAs
Вот каким образом, уже замучался не знаток ни шарепойнта не c#.
есть DefaultNetworkCredential но что то не получается попытаюсь сейчас выудить ошибку
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 20.08.2012, 16:32   #10  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от plumbum Посмотреть сообщение
погодите, в любом случае у вас должна быть указана хотя бы конфигурация AOS, вы же все таки к чему то подключаетесь
Если код выполняется на сервере из Web-Сервиса, (ASPX код или что там у вас), то ни о каком Logon речи быть не может: в реальной жизни это служба выполняющая запросы на сервере по мере их поступления. Вы можете "выудить" пользователя из запроса к методу Web-Service и указать его в методе LogonAs
Изменил код приблизительно так
Код:
nc = System.Net.CredentialCache.DefaultNetworkCredentials;
            String[] s = User.Identity.Name.Split('\\');
            try
            {
                ax.LogonAs(s[1], "Bars", nc, null, null, null,null);
            }
            catch (Exception e)
            {                
                result = "#Ошибка подключения " + e.Message + " " + s[1]; 
                b = false;
            }
Ошибка следующая: Ошибка подключения заданные аругументы метода являются недопустимыми

Похоже придеца брица
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 20.08.2012, 18:06   #11  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Цитата:
Вот каким образом, уже замучался не знаток ни шарепойнта не c#.
это к чему было?

s[1] - так не пойдет, присвойте имя пользователя переменной типа string и передайте напрямую эту переменную, а не ссылку на элемент массива. Это я сужу из опыта работы с .NET BC из самой AX. Ну чем черт не шутит

может стоит пустые сроки ("") вместо null передавать?
еще раз осмелюсь повториться: параметр "конфигурация" надо заполнить, и этот файл должен быть доступет из-под пользователся, выполняющего код, или попробовать указать имя сервера
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!

Последний раз редактировалось plumbum; 20.08.2012 в 18:12.
Старый 20.08.2012, 20:36   #12  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от plumbum Посмотреть сообщение
это к чему было?

s[1] - так не пойдет, присвойте имя пользователя переменной типа string и передайте напрямую эту переменную, а не ссылку на элемент массива. Это я сужу из опыта работы с .NET BC из самой AX. Ну чем черт не шутит

может стоит пустые сроки ("") вместо null передавать?
еще раз осмелюсь повториться: параметр "конфигурация" надо заполнить, и этот файл должен быть доступет из-под пользователся, выполняющего код, или попробовать указать имя сервера
проблема в том что для loginAs мне нужен параметр NetworkCredential его я не знаю, т.к. не знаю пароль текущего пользователя
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 23.08.2012, 10:50   #13  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Понемногу получается
Заполнение адреса клиента и заказа получается хорошо, и довольно быстро. Подтягиваю данные из нашего кладра(правда устаревший немного)
интересно а почему microsoft не сделал поддержу ajax на EP, планируется ли вообще это делать или нет, было бы вообще замечательно иметь дело с той же сессией к тому же.
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 23.08.2012, 11:14   #14  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от Murlin Посмотреть сообщение
интересно а почему microsoft не сделал поддержу ajax на EP
Сделал.
ASP.NET AJAX 1.0

Так же можно использовать jQuery
Using jQuery in EP
За это сообщение автора поблагодарили: macklakov (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
fed: Net requirements update in MRP Module and Working Set of MRP Blog bot DAX Blogs 14 08.05.2012 13:09
emeadaxsupport: What changes are required if we change the Business Connector Proxy used by AX 2009 Generated AIF Web services Blog bot DAX Blogs 0 29.03.2010 15:05
Everything AX: Using the .NET Business Connector from PowerShell Blog bot DAX Blogs 0 02.09.2009 16:05
Inside Dynamics AX 4.0: Working with the .NET Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15
Inside Dynamics AX 4.0: Inside the Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:10.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.