• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net动态运用webservice并设置超时时间

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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);
        }
    }
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net自定义分页发布时间:2022-07-10
下一篇:
ASP.NETMVC–关于Action返回结果类型的事儿(上)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap