当前位置: 代码迷 >> Web Service >> wcf出错请求的名称有效,但是找不到请求的类型的数据
  详细解决方案

wcf出错请求的名称有效,但是找不到请求的类型的数据

热度:229   发布时间:2016-05-02 02:18:01.0
wcf报错请求的名称有效,但是找不到请求的类型的数据
本帖最后由 moyifeng 于 2014-11-21 10:02:28 编辑
wcf调用的问题,这里接口中一共有10来个方法,只有这个调用失败。检查了接口,实现的服务,调用的方法,最后还是一头雾水!请高手指教!
出错截图

定义的接口

/// <summary>
        /// 获取搜索结果
        /// </summary>
        /// <param name="keywords">关键字</param>
        /// <param name="factoryId">厂商</param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        [OperationContract]
        string GetSaerchResult(string keywords, long factoryId, int pageIndex, int pageSize);

实现的服务

public string GetSaerchResult(string keywords, long factoryId, int pageIndex, int pageSize)
        {
            var keys = keywords.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

            Dictionary<string, List<ProductSaerch>> results = new Dictionary<string, List<ProductSaerch>>();
            List<ComputeTask> tasks = new List<ComputeTask>();
            ComputeCallClient client = new ComputeCallClient();
            foreach (var item in keys)
            {
                //判断是否缓存是否存在关键字,如果不存在,则需要发送到搜索引擎服务去搜索
                if (CacheUtil.InitCache.Contains("SaerchEngine." + item))
                {
                    this.FilterFactoryResult(factoryId, results, item);
                }
                else
                {
                    SaerchEngineParameter para = new SaerchEngineParameter();
                    para.SaerchEngineType = 3;
                    para.SearchKeyword = item;

                    ComputeTask task = new ComputeTask();
                    task.ExecutorType = "Linkage.KYY.WindowsService.Business.SaerchEngineService,Linkage.KYY.WindowsService.Business";
                    task.Paras = Newtonsoft.Json.JsonConvert.SerializeObject(para);

                    client.SubmitTask(task);
                    tasks.Add(task);
                }
            }

客户端调用

public string GetSaerchResult(string keywords, long factoryId, int pageIndex, int pageSize)
        {
            RemoteAccess rpc = null;
            ICacheService service = null;
            string obj = "";
            try
            {
                rpc = new RemoteAccess();
                service = rpc.CreateObject<ICacheService>();
                obj = service.GetSaerchResult(keywords, factoryId, pageIndex, pageSize);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                rpc.CloseObject<ICacheService>(service);
            }
            return obj;
        }

------解决思路----------------------
点“查看详细信息”
------解决思路----------------------
看错误应该是dns解析不了,你用ip试试
------解决思路----------------------
你跟踪GetAddrInfo,看和调用其他方法时有何区别
  相关解决方案