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
    233,553 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
    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
    233,553 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

🌸 Community Spring Festival 2025 Challenge Winners! 🌸

Congratulations to all our community participants!

Adis Hodzic – Community Spotlight

We are honored to recognize Adis Hodzic as our May 2025 Community…

Kudos to the April Top 10 Community Stars!

Thanks for all your good work in the Community!

Leaderboard > Microsoft Dynamics AX (Archived)

#1
Mohamed Amine Mahmoudi Profile Picture

Mohamed Amine Mahmoudi 100 Super User 2025 Season 1

#2
Community Member Profile Picture

Community Member 48

#3
shanawaz davood basha Profile Picture

shanawaz davood basha 6

Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans