آموزش زبان های برنامه نویسی

آموزش زبان های برنامه نویسی

آموزش انواع زبان های برنامه نویسی
آموزش زبان های برنامه نویسی

آموزش زبان های برنامه نویسی

آموزش انواع زبان های برنامه نویسی

نحوه ارسال دو پارامتر در WCF


نحوه ارسال دو پارامتر به تابع با در WCF


کدها زیر را در سرویس مورد نظر می نویسیم 

 [OperationContract]

        [WebInvoke(UriTemplate = "Invoice", RequestFormat = WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, Method = "POST")]

        OutputResultStruct<KeyValuePair<string, int>> AddToInvoice(Invoice invoice, List< InvoiceDetail> invoicedetail,int RequestId);


کلاسی که برای این کار نوشتیم تا بتواند هر ساختاری را قبول کند


  public class OutputResultStruct<T> where T : struct

    {


        public bool IsValidResult { get; set; }

        public int ErrorCode { get; set; }

        public string Description { get; set; }

        private List<T> _resultvalue;

        public List<T> resultvalue

        {

            get

            {

                return (List<T>)_resultvalue;

            }

            set

            {

                _resultvalue = value;

            }


        }



    }


و مقدار زیر را هم در Web Config قرار می دهیم تا در هنگام آدرس دهی مشکلی نداشته باشیم


  

 <system.serviceModel>

    <services>

        <endpoint address="InvoiceService" binding="webHttpBinding" contract="HamrahMelk.IInvoiceService"

                                 behaviorConfiguration="MyEndpointBehavior" name="InvoiceService" > </endpoint>


</services>

  </system.serviceModel>


حال متدی که در فایل SVC  می نویسیم به شکل زیر خواهد بود.


  public OutputResultStruct<KeyValuePair<string, int>> AddToInvoice(Invoice invoice, List<InvoiceDetail> invoicedetail, int RequestId)

        {

            var OBJresult = new OutputResultStruct<KeyValuePair<string, int>>();

            try

            {

                using (DataClassesDataContext Context = new DataClassesDataContext())

                {


                    Invoice obj = new Invoice();


                    obj.UserId = invoice.UserId;

                    obj.RequestId = RequestId;

                    Context.Invoices.InsertOnSubmit(obj);

                    Context.SubmitChanges();



                    var Resultinvoicedetail = AddToInvoiceDetail(invoicedetail, obj.InvoiceId);


                    if (Resultinvoicedetail.IsValidResult==false)

                    {

                        Invoice ObjInvoiceDelete = Context.Invoices.Single(q => q.InvoiceId == obj.InvoiceId);

                        Context.Invoices.DeleteOnSubmit(ObjInvoiceDelete);

                        Context.SubmitChanges();


                        OBJresult.ErrorCode = Resultinvoicedetail.ErrorCode;

                        OBJresult.Description = Resultinvoicedetail.Description;

                        OBJresult.IsValidResult = false;

                        OBJresult.resultvalue = new List<KeyValuePair<string, int>>() ;

                    }

                    else

                    {

                    OBJresult.ErrorCode = Resultinvoicedetail.ErrorCode;

                    OBJresult.Description = Resultinvoicedetail.Description;

                    OBJresult.IsValidResult = true;

                    OBJresult.resultvalue = new List<KeyValuePair<string, int>>() { new KeyValuePair<string, int>("InsertId", obj.InvoiceId) };

                    }


                  

                }


            }

            catch (Exception ex)

            {

                OBJresult.ErrorCode = 2;

                OBJresult.Description = ex.Message;

                OBJresult.IsValidResult = false;

                OBJresult.resultvalue = new List<KeyValuePair<string, int>>();


            }

            return OBJresult;

        }