How to Consume AX code in C# using Custom Service?

1. I will demonstrate now, how to expose AIF Web Service out of the AX.

2. In this, I will expose AX Data out of the application with a simple Example.

3. Create table named SampleAIFTbl with 3 fields (Name, AddressCity,
PhoneMobile), Class named SampleAIFServiceClass which have one
method (getSampleList()).

//code
[SysEntryPointAttribute(true),
AifCollectionTypeAttribute(‘return’, Types::String)]
//return denotes the parameter type and String specifies
//the type of data the collection will hold

public List getSampleList()
{
SampleAIFTbl sampleAIFTbl;
List list = new List(Types::String);
//select all rows
while select * from sampleAIFTbl
{
//add name in the list
list.addEnd(sampleAIFTbl.Name);
//list.addEnd(” “);
}
return list;
}
4. getSampleList() method takes Name field data and insert into List object
of type String and return it C# by AIF Web Service through WSDL Port.

5. Create Service from AOT node and select the class created in previous
step in property node, select add operation node, add the method of
class SampleAIFServiceClass and select ok.

6. Create Service Group from AOT node, right click Service Group & select
“New Service Node Reference”, select auto deploy to yes and deploy the
service.
7. Open Company/System administration/Area page/Inbound Ports, select
the created service which is successfully deployed and copy the URI (wait).

8. Open visual studio, create project and select Console Application, once it
opens, open the solution explorer, right click on it & select Add project to
AOT
9. Once project added to AOT, Select Add Service Reference, paste URI and
click Go, give appropriate name so press ok.

10. We can use that service as per requirement, as I am just displaying those
data at console.

Note: Whenever you made modification in AX, deactivate the service, generate CIL
Generation & deploy the service again and in VS, update service reference to avoid errors.

C# code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel.Channels;
using SampleAIFConsole.SampleAIFServiceReference;

namespace SampleAIFConsole
{
class Program
{
static void Main(string[] args)
{

SampleAIFServiceReference.SampleAIFServiceClient client;

try
{

SampleAIFServiceReference.CallContext cc = new
SampleAIFServiceReference.CallContext();
client = new SampleAIFServiceClient();
cc.Company = “ussi”;
foreach (string s in client.getSampleList(cc))
{
Console.Out.WriteLine(“the values are ” + s);
}

Console.ReadLine();

}
catch (Exception e)
{

Console.Out.WriteLine(e.ToString());
Console.ReadLine();
}

}
}
}
You can code it, debug it, run it, see the output and modified it as you want.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: