web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :
Microsoft Dynamics AX (Archived)

How to pass list of class in API Web service

(0) ShareShare
ReportReport
Posted on by 6,125

Hi,

I was trying to pass list of class parameter from .NET client to D365 API custom service but whenever i am trying to pass list of class getting error with status code 500, i am able to get List of string, int or etc but when try to pass collection of class then its showing error. help required 

*This post is locked for comments

I have the same question (0)
  • Martin Dráb Profile Picture
    239,392 Most Valuable Professional on at

    Please give us more information.

    What's the parameter of the method? What class are you trying to use in the collection? Is it a data contract class? Didn't you forget AifCollectionTypeAttribute?

    Then, how are you calling the service? Are you using the SOAP endpoing or the JSON endpoint?

  • Sheikh Sohail Profile Picture
    6,125 on at

    This is SalesLine Class

    [DataContractAttribute]

    public class EDISalesOrderLineContract

    {

       str _SalesOrderNumber;

       str _ItemNumber;

       int _OrderedSalesQuantity;

       str _ShippingSiteId;

       str _ShippingWarehouseId;

       [DataMemberAttribute]

       public str SalesOrderNumber( str Value = _SalesOrderNumber)

       {

           _SalesOrderNumber = Value;

           return _SalesOrderNumber;

       }

       [DataMemberAttribute]

       public str ItemNumber( str Value = _ItemNumber)

       {

           _ItemNumber = Value;

           return _ItemNumber;

       }

       [DataMemberAttribute]

       public int OrderedSalesQuantity( int Value = _OrderedSalesQuantity)

       {

           _OrderedSalesQuantity = Value;

           return _OrderedSalesQuantity;

       }

       [DataMemberAttribute]

       public str ShippingSiteId( str Value = _ShippingSiteId)

       {

           _ShippingSiteId = Value;

           return _ShippingSiteId;

       }

       [DataMemberAttribute]

       public str ShippingWarehouseId( str Value = _ShippingWarehouseId)

       {

           _ShippingWarehouseId = Value;

           return _ShippingWarehouseId;

       }

    }

    This is My Header Class

    using System.Collections;

    [DataContractAttribute]

    public class EDISalesOrderDataContract

    {

       str _SalesOrderNumber;

       str _CurrencyCode;

       str _InvoiceCustomerAccountNumber;

       str _OrderingCustomerAccountNumber;

       str _LanguageId;

       str _DataAreaId;

       List SalesLines;

       [DataMemberAttribute]

       public str ParmSalesOrderNumber( str Value = _SalesOrderNumber)

       {

           _SalesOrderNumber = Value;

           return _SalesOrderNumber;

       }

       [DataMemberAttribute]

       public str ParmCurrencyCode( str Value = _CurrencyCode)

       {

           _CurrencyCode = Value;

           return _CurrencyCode;

       }

       [DataMemberAttribute]

       public str ParmInvoiceCustomerAccountNumber( str Value = _InvoiceCustomerAccountNumber)

       {

           _InvoiceCustomerAccountNumber = Value;

           return _InvoiceCustomerAccountNumber;

       }

       [DataMemberAttribute]

       public str ParmOrderingCustomerAccountNumber( str Value = _OrderingCustomerAccountNumber)

       {

           _OrderingCustomerAccountNumber = Value;

           return _OrderingCustomerAccountNumber;

       }

       [DataMemberAttribute]

       public str ParmLanguageId( str Value = _LanguageId)

       {

           _LanguageId = Value;

           return _LanguageId;

       }

       [DataMemberAttribute]

       public str ParmDataAreaId( str Value = _DataAreaId)

       {

           _DataAreaId = Value;

           return _DataAreaId;

       }

       [DataMemberAttribute]//,

            AifCollectionTypeAttribute(Types::Class,  classStr(EDISalesOrderLineContract))]

       AifCollectionTypeAttribute("return",Types::Class, classStr(EDISalesOrderLineContract))]

       public List SalesLines( List Value = SalesLines)

       {

           SalesLines = Value;

           return SalesLines;

       }

    }

    ====================================================

    This is my service code

    public str Create(EDISalesOrderDataContract _SalesOrder)

       {

           str ret = strFmt("%1-%2-%3-%4-%5",_SalesOrder.ParmSalesOrderNumber(),_SalesOrder.ParmOrderingCustomerAccountNumber(),

               SalesOrder.ParmInvoiceCustomerAccountNumber(), SalesOrder.ParmCurrencyCode(), _SalesOrder.ParmDataAreaId());

           try

           {

               AxSalesTable stc = new AxSalesTable();

               AxSalesLine  slc = new AxSalesLine();

               EDISalesOrderLineContract sl;

               stc.parmCurrencyCode(_SalesOrder.ParmCurrencyCode());

               stc.parmInvoiceAccount(_SalesOrder.ParmInvoiceCustomerAccountNumber());

               stc.custAccount_CustTableRecord(CustTable::find(_SalesOrder.ParmOrderingCustomerAccountNumber()));

               stc.parmLanguageId(_SalesOrder.ParmLanguageId());

               stc.Save();

               ret = stc.parmSalesId();

               List SLListTemp;// = new List(Types::Class);

               SLListTemp = _SalesOrder.SalesLines();

               ListIterator iterator = new ListIterator(SLListTemp);

               while(iterator.more())

               {

                   InventDim inventDim;

                   sl = iterator.value();

                   InventDim.inventSiteId = sl.ShippingSiteId();

                   InventDim.InventLocationId = sl.ShippingWarehouseId();

                   slc.parmSalesId(stc.parmSalesId());

                   slc.parmItemId(sl.ItemNumber());

                   slc.parmQtyOrdered(sl.OrderedSalesQuantity());

                   slc.parmInventDimId(InventDim::findOrCreate(InventDim).inventDimId);

                   slc.save();

                   ret = strFmt(";%1-%2-%3", ret, sl.ItemNumber(), sl.OrderedSalesQuantity());

                   iterator.next();

               }

               return ret;

               //return stc.parmSalesId();

           }

           catch

           {

               //return "Error aa gya";

               ret = strFmt("Error aa gya bhai - %1",ret);

               return ret;

           }

       }

    -----------------------------

  • Martin Dráb Profile Picture
    239,392 Most Valuable Professional on at

    Thank you. Now please the part about how you're calling the service.

    Also, did you try to debug the service? And did you check event logs for IIS?

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Stars!

Meet the Microsoft Dynamics 365 Contact Center Champions

We are thrilled to have these Champions in our Community!

Congratulations to the March Top 10 Community Leaders

These are the community rock stars!

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
CP04-islander Profile Picture

CP04-islander 39

#2
Michel ROY Profile Picture

Michel ROY 14

#3
imran ul haq Profile Picture

imran ul haq 8

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans