using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
using System.Web;
using System.Net;
using System.Reflection;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Web.Services;
using System.Text;
using System.Web.Services.Description;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System.Data;

public partial class Default2 : System.Web.UI.Page
{
         protected void Page_Load( object sender, EventArgs e)
        {
                WebClient client = new WebClient();
                 string url = "http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl";
                Stream stream = client.OpenRead(url);
                ServiceDescription description = ServiceDescription.Read(stream);
                ServiceDescriptionImporter importer = new ServiceDescriptionImporter();//创建客户端代理代理类。
                importer.ProtocolName = "Soap"; //指定访问协议。
                importer.Style = ServiceDescriptionImportStyle.Client; //生成客户端代理。
                importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;
                importer.AddServiceDescription(description, null, null); //添加WSDL文档。
                CodeNamespace nmspace = new CodeNamespace(); //命名空间
                nmspace.Name = "webservice";
                CodeCompileUnit unit = new CodeCompileUnit();
                unit.Namespaces.Add(nmspace);
                ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit);
                CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
                CompilerParameters parameter = new CompilerParameters();
                parameter.GenerateExecutable = false;
                parameter.OutputAssembly = "MyTest.dll";//输出程序集的名称
                parameter.ReferencedAssemblies.Add("System.dll");
                parameter.ReferencedAssemblies.Add("System.XML.dll");
                parameter.ReferencedAssemblies.Add("System.Web.Services.dll");
                parameter.ReferencedAssemblies.Add("System.Data.dll");
                CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit);
                if (result.Errors.HasErrors)
                {
                        //Response.Write("调用错误");
                }
                Assembly asm = Assembly.LoadFrom("MyTest.dll");//加载前面生成的程序集
                Type t = asm.GetType("webservice.TrainTimeWebService");
                object o = Activator.CreateInstance(t);
                MethodInfo method = t.GetMethod("getDetailInfoByTrainCode");
                object[] paras = { "7008", "" };//这里是获取西安途径宝鸡的火车K591次列车
                DataSet item = (DataSet)method.Invoke(o, paras);//返回火车时刻信息
                this.ASPxGridView1.DataSource = item.Tables[0];
                this.ASPxGridView1.DataBind();

        }
}
运行效果如下