Мы используем внешний веб-сервис (WCF) в нашем проекте AX2012. Мы выполнили процедуру, описанную ниже: blog. Мы реализуем безопасность, передавая токен в заголовке. Однако я не уверен, как это сделать в AX2012.Передача значений в заголовке
пример кода для получения токена
static void myTestServiceWSDL(Args _args)
{
myServiceWSDL.Proxies.Service.ServiceClient service;
myServiceWSDL.Proxies.Service.LoginData LoginData;
str token;
System.Exception ex;
System.Type type;
try
{
type = CLRInterop::getType('myServiceWSDL.Proxies.Service.ServiceClient');
service = AifUtil::createServiceClient(type);
LoginData = new myServiceWSDL.Proxies.Service.LoginData();
LoginData.set_uName("test");
LoginData.set_pwd("test");
token=service.Login(LoginData);
info(token);
}
catch(Exception::CLRError)
{
ex = CLRInterop::getLastException();
info(CLRInterop::getAnyTypeForObject(ex.ToString()));
}
}
Токен возвращается в порядке, который подтверждает, что код работает. Теперь вопрос в том, как сделать, чтобы установить значения заголовка для сообщения. Если это C# я бы сделал
using (MemberMasterClient proxy = new MemberMasterClient())
{
using (OperationContextScope scope
= new OperationContextScope(proxy.InnerChannel))
{
// set the message in header
MessageHeader header =
MessageHeader.CreateHeader("SourceApplication",
"urn:spike.WCFHeaderExample:v1",
"WCFClient Application 2");
OperationContext.Current.OutgoingMessageHeaders.Add(header);
Console.WriteLine("Membership Details");
Console.WriteLine("Henry's - {0}", proxy.GetMembership("Henry"));
}
}
}
Может ли один, дайте мне знать, как сделать эквивалент в X ++ Одна из идей, которая была на мой взгляд, чтобы написать сборку в C#, который затем может быть вызван в AX2012. Дайте это, но идея состоит в том, чтобы закодировать это в X ++ в AX2012.
, попытавшись реализовать код, похожий на C#, мы нанесли некоторые блоки. По-видимому, мы не можем создать класс MessageHeader. Реализация выглядит так: http://dotnetfiddle.net/z4y748 В основном он не компилируется и не выдает ошибку. Метод System.ServiceModel.Channels.MessageHeader не был объявлен. Кажется, что есть что-то очевидное, чего мы не видим, просто не в состоянии наложить на него свой палец. Вы могли бы указать. –
Давайте посмотрим пример кода. –