本文整理汇总了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;
}
}
}
}
}
示例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); //暂时不抛出异常也能往下走
}
}