web
You’re offline. This is a read only version of the page.
close
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

I have the same question (0)
  • Martin Dráb Profile Picture
    237,978 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
    237,978 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

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
Martin Dráb Profile Picture

Martin Dráb 4 Most Valuable Professional

#1
Priya_K Profile Picture

Priya_K 4

#3
MyDynamicsNAV Profile Picture

MyDynamicsNAV 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans