我使用DevForce 2010和Silverlight 4。
当保存包含大量的二进制数据的实体,我得到这个错误:
Unhandled Error in Silverlight Application The remote server returned an error: NotFound.
当调试运行应用程序我看到这些错误:
Unhandled Error in Silverlight Application Insufficient memory to continue the execution of the program.
Bad CRC32 in GZIP stream.
我发现Ideablades论坛的主题是讨论这个问题: http://www.ideablade.com/forum/forum_posts.asp?TID=3361&PN=1&title=bad-crc32-in-gzip-stream
这是服务器或客户端上的问题吗?
这是一个已经在2010年DevForce任何新版本的已解决的问题?
我的服务器有4 GB内存。 会增加内存解决这个问题?
或者这将是正确的解决方案?
是的,客户端和服务器上的OnEndpointCreated覆盖的地方,你应该添加定制。 您可以添加以下从结合删除GZIP:
public override void OnEndpointCreated(System.ServiceModel.Description.ServiceEndpoint endpoint)
{
if (endpoint.Binding is CustomBinding)
{
var binding = endpoint.Binding as CustomBinding;
var elements = binding.CreateBindingElements();
// Swap out existing (GZIP) message encoding for binary
var encoding = elements.Find<MessageEncodingBindingElement>();
if (encoding != null)
{
elements.Remove(encoding);
encoding = new BinaryMessageEncodingBindingElement();
elements.Insert(0, encoding);
endpoint.Binding = new CustomBinding(elements);
}
}
}
DevForce会发现你的类,如果他们在探测到的客户机/服务器上的程序集。
这将关闭压缩一切从您的DevForce客户端向EntityServer,所以可能有点重手。 您可以打开IIS压缩来压缩发送到客户端来帮助数据。
再也没有出现过,因为6.1.7发布2010年该线程仍然包含如何解决该问题的最佳信息DevForce的任何变化GZIP处理:1)修改保存逻辑或你的实体定义,以减少量数据保存; 2)关闭使用GZIP的; 或3)写与另一压缩库的自定义消息编码器。
谢谢金·约翰逊,
我看过的样品,我觉得不舒服添加这些配置文件,并可能打破现在的东西工作正常。
如果我去的代码的方式,我会巧妙地关闭GZIP和仍然保留的对DevForce的默认设置的休息吗?
我想下面的代码是我应该去什么?
如果我保存在客户端和服务器上的这些课程,会自动DevForce找到这些类?
//Client
using System.ServiceModel.Channels;
using IdeaBlade.Core.Wcf.Extensions;
public class ProxyEvents : IdeaBlade.EntityModel.ServiceProxyEvents {
public override void OnEndpointCreated(System.ServiceModel.Description.ServiceEndpoint endpoint) {
base.OnEndpointCreated(endpoint);
// My client code turning GZIP off comes here?
}
public override void OnFactoryCreated(System.ServiceModel.ChannelFactory factory) {
base.OnFactoryCreated(factory);
}
}
//Server
using System.ServiceModel.Channels;
using IdeaBlade.Core.Wcf.Extensions;
public class ServiceEvents : IdeaBlade.EntityModel.Server.ServiceHostEvents {
public override void OnEndpointCreated(System.ServiceModel.Description.ServiceEndpoint endpoint) {
base.OnEndpointCreated(endpoint);
// My server code turning GZIP off comes here?
}
public override void OnServiceHostCreated(System.ServiceModel.ServiceHost host) {
base.OnServiceHostCreated(host);
}
}