zoukankan      html  css  js  c++  java
  • asp.net 动态运用webservice并设置超时时间

    c# 动态运用webservice并设置超时时间:

    默认超时时间为100000 ,也就是100s,如图:

     可以通过上图的语句对其进行修改

    using System;
    using System.CodeDom;
    using System.CodeDom.Compiler;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    using System.Web.Services.Description;
    using System.Xml;
    
    namespace Sea.Hus.Service.Agent
    {
        /// <summary>
        /// 动态调用WebService代理类
        /// </summary>
        public class WebServiceAgent
        {
            private object agent;
            private Type agentType;
            private const string CODE_NAMESPACE = "See.WebServiceAgent.Dynamic";
            
            /// <summary>
            /// 构造
            /// </summary>
            /// <param name="url"></param>
            public WebServiceAgent(string url)
            {
                try
                {
                    XmlTextReader reader = new XmlTextReader(url + "?wsdl");
    
                    //创建和格式化 WSDL 文档
                    ServiceDescription sd = ServiceDescription.Read(reader);
    
                    //创建客户端代理代理类
                    ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
                    sdi.AddServiceDescription(sd, null, null);
    
                    //使用 CodeDom 编译客户端代理类
                    CodeNamespace cn = new CodeNamespace();
                    CodeCompileUnit ccu = new CodeCompileUnit();
                    ccu.Namespaces.Add(cn);
                    sdi.Import(cn, ccu);
                    Microsoft.CSharp.CSharpCodeProvider icc = new Microsoft.CSharp.CSharpCodeProvider();
    
                    CompilerParameters cp = new CompilerParameters();
                    cp.ReferencedAssemblies.Add("System.dll");
                    cp.ReferencedAssemblies.Add("System.XML.dll");
                    cp.ReferencedAssemblies.Add("System.Web.Services.dll");
                    cp.ReferencedAssemblies.Add("System.Data.dll");
    
                    CompilerResults cr = icc.CompileAssemblyFromDom(cp, ccu);
                    agentType = cr.CompiledAssembly.GetTypes()[0];
                    agent = Activator.CreateInstance(agentType);
                    //设置超时时间
                    ((System.Web.Services.Protocols.WebClientProtocol)(agent)).Timeout = 200000;//毫秒
                }
                catch (System.Exception ex)
                {throw;
                }
                
            }
    
            ///<summary>
            ///调用指定的方法
            ///</summary>
            ///<param name="methodName">方法名,大小写敏感</param>
            ///<param name="args">参数,按照参数顺序赋值</param>
            ///<returns>Web服务的返回值</returns>
            public object Invoke(string methodName, params object[] args)
            {
    
                MethodInfo mi = agentType.GetMethod(methodName);
                return this.Invoke(mi, args);
            }
    
            ///<summary>
            ///调用指定方法
            ///</summary>
            ///<param name="method">方法信息</param>
            ///<param name="args">参数,按照参数顺序赋值</param>
            ///<returns>Web服务的返回值</returns>
            public object Invoke(MethodInfo method, params object[] args)
            {
                return method.Invoke(agent, args);
            }
        }
    }
  • 相关阅读:
    堆排序,C++模板编程
    洗牌程序的两种实现方法比较
    读取/保存xml文件的类(序列化/反序列化)
    [返回上一页,并且刷新]
    实现等级的存储过程sql
    C#实现WMI读取远程计算机信息【原】
    开源IT资产管理系统>OCS Inventory NG服务端
    xaf实现自定义只读参数
    How to show a Detail View via code
    15个最好的免费开源电子商务平台
  • 原文地址:https://www.cnblogs.com/hankuikui/p/13712286.html
Copyright © 2011-2022 走看看