我的IIS上运行了WCF Web服务。它从客户端获取数据并在数据库中插入。我的Web服务需要复杂数据类型播放器的对象。在客户端中,我创建了一个玩家对象,并将其传递给Web服务以进行工作。
在我的客户端控制台应用程序中
string strBaseAddress = ConfigurationSettings.AppSettings["WEBSERVICE"];
Uri baseAddress = new Uri(strBaseAddress);
WebServiceHost host = new WebServiceHost(typeof(TrialCenterAPI), baseAddress);
host.open
// Doing Work
host.close
此应用程序正常运行。
现在,当我通过添加服务引用来编写另一个客户端来执行相同的工作时。它每次都给我400个错误请求错误。
我创建了自动生成的API客户端对象,然后调用了适当的Web服务方法,并将Players的对象传递给它。我尝试谷歌搜索,我没有得到任何解决方案。,我增加了服务器和客户端Web配置中的最大大小。
客户端Web Config使用自定义绑定,如下所示:
<system.serviceModel>
<bindings>
<customBinding>
<binding name="WebHttpBinding">
<textMessageEncoding
maxReadPoolSize="2147483647"
maxWritePoolSize="2147483647"
messageVersion="None" writeEncoding="utf-8" >
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"/>
</binding>
</customBinding>
</bindings>
<client>
<endpoint name="WebHttpBinding"
address="Service Address/"
binding="customBinding"
bindingConfiguration="WebHttpBinding"
contract="TestClientAPI.API" />
</client>
</system.serviceModel>
任何帮助都将受到高度赞赏。
我在msdn中发现了一个说
的线程“这是Web编程模型本身的限制。与SOAP端点(即具有BasicHttpBinding,WSHttpBinding等的端点)不同,它们可以使用有关所有操作的信息来公开关于自身的元数据(WSDL或Mex)。在端点中的参数,目前没有标准方法来公开非SOAP端点的元数据 - 而这正是基于webHttpBinding的端点所在。简而言之,WCF测试客户端对基于Web的端点没有用处。当WCF发布其下一个版本时,会出现一些表示Web样式端点的标准,我们可能会更新测试客户端以支持它,但目前还没有广泛采用。
您可以尝试的一种替代方法(尽管绝对不是那么简单/方便)是使用ChannelFactory类在代码中自己创建测试客户端(使用服务中使用的相同合同/绑定/行为(请参阅下面的示例)。然后可以使用一些网络捕获/重放工具,如Fiddler(www.fiddlertool.com)向服务发送其他请求。“
链接是:http://social.msdn.microsoft.com/forums/en-US/wcf/thread/deabd25b-a219-4e95-9826-d40dc2f75543
我正在寻找这个确切问题的解决方案。我可以使用ChannelFactory类或Fiddler来使用服务。我无法使用服务客户端。我想在WCF模型中这个问题仍然没有进展。
还有一件事,我在服务器的web.config或客户端的app.config中没有。我在Server Web.config中添加了这个,然后我得到了一个不同的错误“'System.ServiceModel.ClientBase`1'的类型初始化器引发了一个异常。”我也从配置中删除了webHttpBinding设置。
答案 0 :(得分:4)
首先,webHttpBinding
(REST风格)不使用任何这些设置 - 这些设置仅适用于基于SOAP的绑定,如wsHttpBinding
或basicHttpBinding
。
对于WCF REST样式绑定,您需要确保IIS可以支持更大的传输 - 默认情况下,IIS max消息大小的值大于默认值。
检查你的web.config - 你有这样的条目吗?
<system.web>
......
<httpRuntime maxRequestLength="32678"/>
......
</system.web>
这是KB的限制 - 默认值为4096(4 MB) - 您可能需要将其增加到更高的值。
如果不是导致问题的邮件大小,那么您的服务可能会导致异常吗?你究竟在做什么?上传或下载文件或什么?
马克