创建SoapClient对象几个常见错误提示及解决方案
创建SoapClient对象几个常见错误提示及解决方案 Error Message:
在 ServiceModel 客户端配置部分中,找不到引用协定“SalesModuleWebService.SalesModuleWebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素中找不到与此协定匹配的终结点元素。
Error Message:
BasicHttpBinding BINDING = new BasicHttpBinding("SalesModuleWebServiceSoap"); 以上两个错误提示的根本原因是找不到Config文件或取不到配置文件内的信息,查看工程文件有app.config, 查看debug目录有CSFramework3.WebServiceReference.dll.config 文件。google,baidu搜索文章无果,百思不得其解,无耐之下只能自己取配置文件,源码如下: /// <summary>
/// 创建销售模块的SOAP Client对象 /// </summary> /// <returns></returns> public static SalesModuleWebServiceSoapClient CreateSalesModuleClient() { //取ASMX文件URI地址 string endpoint = SoapClientConfig.GetSoapRemoteAddress("SalesModuleWebServiceSoap"); BasicHttpBinding BINDING = new BasicHttpBinding(); SoapClientConfig.ReadBindingConfig(BINDING, "SalesModuleWebServiceSoap"); return new SalesModuleWebServiceSoapClient(BINDING, new EndpointAddress(endpoint)); } // 来源:www.CSFramework.com, C/S框架网
Error Message:
格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: SO_GetBusinessByKeyResponse。InnerException 消息是“反序列化对象 属于类型 CSFramework3.WebServiceReference.SalesModuleWebService.SO_GetBusinessByKeyResponseBody 时出现错误。读取 XML 数据时,超出最大数组长度配额(16384)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性,可增加此配额。 第 1 行,位置为 36611。”。有关详细信息,请参阅 InnerException。
/// <summary>
/// 设置BasicHttpBinding对象的配置信息 /// </summary> /// <param name="BINDING">BasicHttpBinding对象</param> /// <param name="bindingName">bindingName</param> public static void ReadBindingConfig(System.ServiceModel.BasicHttpBinding BINDING, string bindingName) { XmlDocument xml = new XmlDocument(); xml.Load(SoapClientConfig.ConfigFile); string xpath; XmlNode node; xpath = "configuration/system.serviceModel/bindings/basicHttpBinding/binding[@name='" bindingName "']"; node = xml.SelectSingleNode(xpath); BINDING.MaxBufferSize = Int32.Parse(node.Attributes["maxBufferSize"].Value); BINDING.MaxBufferPoolSize = Int32.Parse(node.Attributes["maxBufferPoolSize"].Value); BINDING.MaxReceivedMessageSize = Int32.Parse(node.Attributes["maxReceivedMessageSize"].Value); xpath = "configuration/system.serviceModel/bindings/basicHttpBinding/binding[@name='" bindingName "']/readerQuotas"; node = xml.SelectSingleNode(xpath); BINDING.ReaderQuotas.MaxDepth = Int32.Parse(node.Attributes["maxDepth"].Value); BINDING.ReaderQuotas.MaxStringContentLength = Int32.Parse(node.Attributes["maxStringContentLength"].Value); BINDING.ReaderQuotas.MaxArrayLength = Int32.Parse(node.Attributes["maxArrayLength"].Value); BINDING.ReaderQuotas.MaxBytesPerRead = Int32.Parse(node.Attributes["maxBytesPerRead"].Value); BINDING.ReaderQuotas.MaxNameTableCharCount = Int32.Parse(node.Attributes["maxNameTableCharCount"].Value); } // 来源:www.CSFramework.com, C/S框架网
参考文档:
WCF:(400) Bad Request 错误解决方案 RedGate Licensing 激活软件时提示 SQLPrompt.TrayApp解决方案 C/S框架网|用户授权注册系统提示用户'csframework'登陆失败解决方案 解决方案:未能添加SSL证书,错误:1312,指定的登录会话不存在。可能已被终止 mstsc远程桌面提示:这可能是由于 CredSSP 加密数据库修正 解决方案 多语言界面软件开发框架 - 初始化多语言时发生单引号错误(解决方案) VS2017打开vs解决方案提示自动升级DevExpress 17.x WCF开发框架-IIS启用net.tcp协议发现不会自动执行Global应用程序解决方案 升级程序MySQL测试报告:Packets larger than max_allowed_packet are not allowed 的解决方案 WCF开发环境客户端调试服务端跟踪代码不能命中断点解决方案 C#源代码安全缺陷与提高源代码质量解决方案 C# 调用Process.Start 请求的操作需要提升解决方案 WCF采用Message安全模式运行出错:安全包中没有可用的凭证解决方案 C#源代码安全缺陷与提高源代码质量解决方案-WCF服务配置安全 打开VS解决方案出现 Unknown Hard Error 错误
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |