DynamicWebCalling.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Net;
  6. using System.IO;
  7. using System.Web.Services.Description;
  8. using System.CodeDom;
  9. using Microsoft.CSharp;
  10. using System.CodeDom.Compiler;
  11. using System.Reflection;
  12. namespace Ant.Service.Utilities
  13. {
  14. //public class DynamicWebCalling
  15. //{
  16. // #region 调用方法
  17. // ///// </summary>
  18. // ///// <param name="requestUrl">URL地址</param>
  19. // ///// <param name="mothname">方法名</param>
  20. // ///// <param name="parm">参数</param>
  21. // ///// <returns></returns>
  22. // //public static string WebServcieRequest(string requestUrl, string mothname, object[] parm)
  23. // //{
  24. // // object result = DynamicWebCalling.InvokeWebService(requestUrl, mothname, parm);
  25. // // return result.ToString();
  26. // //}
  27. // #endregion
  28. // /// < summary>
  29. // /// 动态调用web服务
  30. // /// < /summary>
  31. // /// < param name="url">WSDL服务地址< /param>
  32. // /// < param name="methodname">方法名< /param>
  33. // /// < param name="args">参数< /param>
  34. // /// < returns>< /returns>
  35. // public static object InvokeWebService(string url, string methodname, object[] args)
  36. // {
  37. // return InvokeWebService(url, null, methodname, args);
  38. // }
  39. // /// < summary>
  40. // /// 动态调用web服务
  41. // /// < /summary>
  42. // /// < param name="url">WSDL服务地址< /param>
  43. // /// < param name="classname">类名< /param>
  44. // /// < param name="methodname">方法名< /param>
  45. // /// < param name="args">参数< /param>
  46. // /// < returns>< /returns>
  47. // public static object InvokeWebService(string url, string classname, string methodname, object[] args)
  48. // {
  49. // string @namespace = "EnterpriseServerBase.WebService.DynamicWebCalling";
  50. // if ((classname == null) || (classname == ""))
  51. // {
  52. // classname =GetWsClassName(url);
  53. // }
  54. // try
  55. // { //获取WSDL
  56. // WebClient wc = new WebClient();
  57. // Stream stream = wc.OpenRead(url);
  58. // ServiceDescription sd = ServiceDescription.Read(stream);
  59. // ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
  60. // sdi.AddServiceDescription(sd, "", "");
  61. // CodeNamespace cn = new CodeNamespace(@namespace);
  62. // //生成客户端代理类代码
  63. // CodeCompileUnit ccu = new CodeCompileUnit();
  64. // ccu.Namespaces.Add(cn);
  65. // sdi.Import(cn, ccu);
  66. // CSharpCodeProvider icc = new CSharpCodeProvider();
  67. // //设定编译参数
  68. // CompilerParameters cplist = new CompilerParameters();
  69. // cplist.GenerateExecutable = false;
  70. // cplist.GenerateInMemory = true;
  71. // cplist.ReferencedAssemblies.Add("System.dll");
  72. // cplist.ReferencedAssemblies.Add("System.XML.dll");
  73. // cplist.ReferencedAssemblies.Add("System.Web.Services.dll");
  74. // cplist.ReferencedAssemblies.Add("System.Data.dll");
  75. // //编译代理类
  76. // CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);
  77. // if (true == cr.Errors.HasErrors)
  78. // {
  79. // System.Text.StringBuilder sb = new System.Text.StringBuilder();
  80. // foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors)
  81. // {
  82. // sb.Append(ce.ToString());
  83. // sb.Append(System.Environment.NewLine);
  84. // }
  85. // throw new Exception(sb.ToString());
  86. // }
  87. // //生成代理实例,并调用方法
  88. // System.Reflection.Assembly assembly = cr.CompiledAssembly;
  89. // Type t = assembly.GetType(@namespace + "." + classname, true, true);
  90. // object obj = Activator.CreateInstance(t);
  91. // System.Reflection.MethodInfo mi = t.GetMethod(methodname);
  92. // return mi.Invoke(obj, args);
  93. // // PropertyInfo propertyInfo = type.GetProperty(propertyname);
  94. // //return propertyInfo.GetValue(obj, null);
  95. // }
  96. // catch (Exception ex)
  97. // {
  98. // throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));
  99. // }
  100. // }
  101. // private static string GetWsClassName(string wsUrl)
  102. // {
  103. // string[] parts = wsUrl.Split('/');
  104. // string[] pps = parts[parts.Length - 1].Split('.');
  105. // return pps[0];
  106. // }
  107. //}
  108. }