Skip to main content

Notifications

Announcements

No record found.

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

  • Martin Dráb Profile Picture
    Martin Dráb 231,403 Most Valuable Professional on at
    RE: How to pass list of class in API Web service

    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?

  • Sheikh Sohail Profile Picture
    Sheikh Sohail 6,125 on at
    RE: How to pass list of class in API Web service

    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
    Martin Dráb 231,403 Most Valuable Professional on at
    RE: How to pass list of class in API Web service

    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?

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

Daivat Vartak – Community Spotlight

We are honored to recognize Daivat Vartak as our March 2025 Community…

Announcing Our 2025 Season 1 Super Users!

A new season of Super Users has arrived, and we are so grateful for the daily…

Tip: Become a User Group leader!

Join the ranks of valued community UG leaders

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 292,516 Super User 2025 Season 1

#2
Martin Dráb Profile Picture

Martin Dráb 231,403 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans