当前位置: 首页>>代码示例>>C#>>正文


C# ChannelFactory.GetType方法代码示例

本文整理汇总了C#中System.ServiceModel.ChannelFactory.GetType方法的典型用法代码示例。如果您正苦于以下问题:C# ChannelFactory.GetType方法的具体用法?C# ChannelFactory.GetType怎么用?C# ChannelFactory.GetType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.ServiceModel.ChannelFactory的用法示例。


在下文中一共展示了ChannelFactory.GetType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CallEventWCFService

        /// <summary>
        /// 调用WCF
        /// </summary>
        /// <param name="ContractType"></param>
        /// <param name="BindingName"></param>
        /// <param name="Endaddress"></param>
        /// <param name="FuncName"></param>
        /// <param name="strValue"></param>
        /// <returns></returns>
        public static object CallEventWCFService(string ContractType, string BindingName, string Endaddress, string FuncName, string strValue)
        {

            EndpointAddress endPoint = new EndpointAddress(Endaddress);//地址
            string XmlTemplete = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + "\r\n" +
                                    "<System>" + "\r\n" +
                                    "{0}" +
                                    "</System>";
            if (ContractType.ToUpper() == "ENGINE")
            {
                IApplicationService contract = new ChannelFactory<IApplicationService>(WCfBindingName(BindingName), endPoint).CreateChannel();
                Type type = contract.GetType();
                MethodInfo methodInfo = type.GetMethod(FuncName);
                strValue = string.Format(XmlTemplete, strValue);
                string[] param = new string[1];
                param[0] = strValue;
                return methodInfo.Invoke(contract, param);
            }
            else
            {             
                using (ChannelFactory<IEventTriggerProcess> channel = new ChannelFactory<IEventTriggerProcess>(WCfBindingName(BindingName), endPoint))
                {
                    IEventTriggerProcess instance = channel.CreateChannel();
                    using (instance as IDisposable)
                    {
                        try
                        {
                            Type type = typeof(IEventTriggerProcess);
                            MethodInfo mi = type.GetMethod(FuncName);
                            strValue = string.Format(XmlTemplete, strValue);
                            string[] param = new string[1];
                            param[0] = strValue;
                            //Log.WriteLog("调用服务验证Endaddress:" + Endaddress + "strValue:" + strValue);
                            return mi.Invoke(instance, param);
                        }
                        catch (TimeoutException tm)
                        {
                            (instance as ICommunicationObject).Abort();
                            //Log.WriteLog("调用服务验证TimeoutException" + tm.StackTrace);
                            throw;
                        }
                        catch (CommunicationException com)
                        {
                            (instance as ICommunicationObject).Abort();
                            //Log.WriteLog("调用服务验证CommunicationException" + com.StackTrace);
                            throw;
                        }
                        catch (Exception vErr)
                        {
                            //Log.WriteLog("调用服务验证Exception" + vErr.StackTrace);
                            (instance as ICommunicationObject).Abort();
                            throw;
                        }
                    }
                }
            }
        }
开发者ID:JuRogn,项目名称:OA,代码行数:66,代码来源:Utility.cs

示例2: CallWCFService

 /// <summary>
 /// 流程调用的方法
 /// </summary>
 /// <param name="BindingName">bindingName</param>
 /// <param name="Endaddress">endaddress</param>
 /// <param name="FuncName">funcName</param>
 /// <param name="strValue">strValue</param>
 /// <returns>object</returns>
 public static object CallWCFService(string bindingName, string endaddress, string funcName, string strValue,ref string erroMesssage)
 {
     //绑定不同的协议未测试,讨论一下最好的方法,或者或者做一个CASE,让用户填好
     try
     {
         EndpointAddress endPoint = new EndpointAddress(endaddress);//地址
         IApplicationService contract = new ChannelFactory<IApplicationService>(WCfBindingName(bindingName), endPoint).CreateChannel();
         Type type = contract.GetType();
         MethodInfo methodInfo = type.GetMethod(funcName);
         string[] param = new string[1];
         param[0] = strValue;
         return methodInfo.Invoke(contract, param);
     }
     catch (Exception e)
     {
         string cMessage = "\r\n 动态 调用第三方服务出错 命名空间:SMT.Workflow.Engine.BLL 类方法:CallWCFService() WCF地址:" + endaddress + "方法名称:" +funcName + " " +
                            "WCF协议:" + bindingName + "\r\n" +
                            "参数:" + strValue + "\r\n";
         Tracer.Debug(cMessage+e.ToString());
         erroMesssage += cMessage;
         return null;
         //throw new Exception("命名空间:SMT.Workflow.Engine.BLL 类方法:CallWCFService()" + e.Message);  //暂时不抛出异常也能往下走
     }
 }
开发者ID:SaintLoong,项目名称:TMFlow,代码行数:32,代码来源:Utility.cs


注:本文中的System.ServiceModel.ChannelFactory.GetType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。