Ejemplo n.º 1
0
        //public SoapCallMessage(XmlReader reader)
        //{
        //    ReadXml(reader);
        //}

        public object[] GetInArgs(MethodInfo method)
        {
            if (m_args == null)
            {
                Log.Default.Trace(string.Format(">>Create:{0}", method.Name));
                StringReader stringReader = new StringReader(m_argsXml);
                XmlReader    argsReader   = XmlReader.Create(stringReader);
                argsReader.EnsureIsStartElement();
                ParameterInfo[] paramsInfo = method.GetParameters();
                object[]        args       = new object[paramsInfo.Length];
                argsReader.ReadStartElement();
                while (argsReader.IsStartElement())
                {
                    string argName = argsReader.LocalName;
                    Log.Default.Trace(string.Format(">>argName:{0}", argName));
                    int           i     = 0;
                    ParameterInfo pInfo = null;
                    for (; i < paramsInfo.Length; i++)
                    {
                        if (paramsInfo[i].Name == argName)
                        {
                            pInfo = paramsInfo[i];
                            break;
                        }
                    }
                    if (pInfo == null)
                    {
                        throw new Exception("pInfo is null!");
                    }
                    if (!pInfo.IsOut)
                    {
                        Type type = pInfo.ParameterType;
                        Log.Default.Trace(">>type:{0}", type.Name);
                        if (type.HasElementType)
                        {
                            Log.Default.Trace(">>HasElementType");
                            //type = type.GetElementType();
                            Log.Default.Trace(">>el type:{0}", type.Name);
                        }
                        args[i] = SoapSerializeHelper.ReadDataContract(argsReader, type);
                    }
                    else
                    {
                        argsReader.ReadStartElement();
                    }
                }
                m_args = args;
            }
            return(m_args);
        }
Ejemplo n.º 2
0
        protected override void WriteXml(XmlWriter writer)
        {
            base.WriteXml(writer);
            string codeValue = GetCodeString(FaultCode);

            //fault
            writer.WriteStartElement(SoapConstant.SoapFaultLocalName, EnvelopeNS);
            //code
            writer.WriteStartElement(SoapConstant.SoapCodeLocalName, EnvelopeNS);
            //value
            writer.WriteStartElement(SoapConstant.SoapCodeValueLocalName, EnvelopeNS);
            writer.WriteValue(codeValue);
            //end value
            writer.WriteEndElement();
            //end code
            writer.WriteEndElement();
            //reason
            writer.WriteStartElement(SoapConstant.SoapReasonLocalName, EnvelopeNS);
            writer.WriteStartElement(SoapConstant.SoapReasonTextLocalName, EnvelopeNS);
            writer.WriteAttributeString("xml", "lang", "", "en");
            writer.WriteValue(Reason);
            writer.WriteEndElement();
            //end reason
            writer.WriteEndElement();
            //detail
            if (Detail != null)
            {
                writer.WriteStartElement(SoapConstant.SoapDetailLocalName, EnvelopeNS);
                try
                {
                    //, null,
                    SoapSerializeHelper.WriteDataContract(writer, Detail, "string", "http://schemas.datacontract.org/2004/07/WcfService3");
                }
                catch (Exception ex)
                {
                    Log.Default.LogException(ex);
                }
                writer.WriteEndElement();
            }
            //end fault
            writer.WriteEndElement();
            //end body
            writer.WriteEndElement();
            writer.WriteEndElement();
        }
Ejemplo n.º 3
0
 protected override void WriteXml(XmlWriter writer)
 {
     base.WriteXml(writer);
     //writer Response
     writer.WriteStartElement(m_actionResponseName, m_serviceNS);
     if (m_result != null)
     {
         SoapSerializeHelper.WriteDataContract(writer, m_result, m_operationName + SoapConstant.ActionResponseResultSuffix, this.m_serviceNS);
     }
     if (m_outArgs != null)
     {
         foreach (KeyValuePair <string, object> outArg in m_outArgs)
         {
             SoapSerializeHelper.WriteDataContract(writer, outArg.Value, outArg.Key);
         }
     }
     //write end Response
     writer.WriteEndElement();
     //write end body
     writer.WriteEndElement();
     //write end Envelop
     writer.WriteEndElement();
 }