C# WP7:序列化WebService调用中的字符串时出错
当我试图用WP7将内容发送到Web服务时,我收到了这个错误 格式化程序在尝试反序列化消息时引发异常:反序列化操作“C# WP7:序列化WebService调用中的字符串时出错,c#,windows-phone-7,maxstringcontentlength,C#,Windows Phone 7,Maxstringcontentlength,当我试图用WP7将内容发送到Web服务时,我收到了这个错误 格式化程序在尝试反序列化消息时引发异常:反序列化操作“SubmitMobileData”的请求消息体时出错。读取XML数据时已超过最大字符串内容长度配额(8192)。可以通过更改创建XML读取器时使用的XmlDictionaryReaderQuotas对象上的MaxStringContentLength属性来增加此配额。第178行,位置21 我想这不是我的网络服务。实际上,我的WP7试图序列化XML中的数据。我的问题是如何在我的WP7应
SubmitMobileData
”的请求消息体时出错。读取XML数据时已超过最大字符串内容长度配额(8192)。可以通过更改创建XML读取器时使用的XmlDictionaryReaderQuotas
对象上的MaxStringContentLength
属性来增加此配额。第178行,位置21
我想这不是我的网络服务。实际上,我的WP7试图序列化XML中的数据。我的问题是如何在我的WP7应用程序中设置XmlDictionaryReaderQuotas
MaxStringContentLength
属性。我知道如何在桌面应用程序的客户端和Web服务中设置它。但是我不能在WP7应用程序的App.XAML文件中设置它
编辑:我在下面发布了client.config。我决定将服务地址向那些希望了解如何连接到服务的人开放。当这个问题有望得到回答时,我将删除wcf连接
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IMobileUtilities" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://utopiapimp.com/services/MobileUtilities.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMobileUtilities"
contract="PimpMobileService.IMobileUtilities" name="BasicHttpBinding_IMobileUtilities" />
</client>
</system.serviceModel>
在以下情况下引发指定的异常:
maxStringContentLength
读卡器配额(因此使用默认配额),或者配额设置得太低李>
maxStringContentLength
reader配额maxStringContentLength
属性,该属性的值足以使每个SubmitMobileData
调用成功
编辑:
更改服务配置的配置以增加XML元素内容长度限制。不要将其复制到您的配置上,只需将其合并到:
<system.serviceModel>
<services>
<service name="Server.MobileUtilities">
<endpoint address="http://utopiapimp.com/services/MobileUtilities.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMobileUtilities"
contract="ServiceReferences.IMobileUtilities" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IMobileUtilities">
<!-- Content of each XML element can be up to 10 million characters. -->
<readerQuotas maxStringContentLength="10000000" />
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
所以基本上你想做的就是改变你WP7应用程序连接的特征,对吗?
在调用远程方法之前,首先必须创建soapclient对象的实例,然后调用它的
OpenAsync()
方法。初始化此soapclient时,您可以提供一个System.ServiceModel.Channels.Binding()
。如果您以编程方式创建此绑定,并在其中设置相应的maxStringContentLength
?是的,是否有什么不合理的地方?您的ServiceReferences.ClientConfig
看起来像什么?把它贴在这里。您是否尝试过使用它?通过decyclones Comments发布编辑web服务的配置,以增加服务接收的SOAP消息中每个元素的最大内容长度。请参阅下面的帖子。遗憾的是,经过您的努力,客户端WP7无法识别客户端字符串。我想这是因为Wp7太新了,他们还没有实现……这是我在添加那行时遇到的一个错误:无法识别的元素“readerQuotas”。我正在考虑通过client.Endpoint.Binding
创建或简单地访问BasicHttpBinding。不幸的是,在Wp7中,Binding类似乎缺少.Elements集合。client.Endpoint.Binding.CreateBindingElements()
在您的案例中返回什么?你能通过这些元素更新属性吗?
static XmlDictionaryReaderQuotas()
{
maxQuota = new XmlDictionaryReaderQuotas(0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff);
}
public static XmlDictionaryReaderQuotas Max
{
get
{
return maxQuota;
}
}