您好我有Silverlight客户端超时问题试过
TimeSpan getSessionMapTimout = new TimeSpan(0, 20, 0);
Client.Endpoint.Binding.CloseTimeout = getSessionMapTimout;
Client.Endpoint.Binding.ReceiveTimeout = getSessionMapTimout;
Client.Endpoint.Binding.SendTimeout = getSessionMapTimout;
Client.Endpoint.Binding.OpenTimeout = getSessionMapTimout;
Client.InnerChannel.OperationTimeout = getSessionMapTimout;
选项包括InnerChannel.OperationTimeout
,其中任何一个都无法在30秒内超时运行Silverlight客户端。
有趣的是IE regestry设置"ReceiveTimeout"=dword:00007530
似乎覆盖了Silverlight客户端设置,因为如果我从注册表中删除它,一切正常。
如何在Silverlight中使用这些超时并覆盖IE注册表设置。
答案 0 :(得分:0)
你使用什么样的约束?我一次使用双面打印几小时/天,没有问题。
您是否检查过服务器端的超时?还要考虑ASP.NET连接超时(我认为它默认设置为30秒或更长时间)。
答案 1 :(得分:0)
我发现,使用IE外部的客户端堆栈(在浏览器外模式下),超过10秒的请求会因来自HttpWebRequest.EndGetResponse()的ArgumentNullException而失败。从我在网上看到的情况来看,其他人也在Firefox和Chrome中经历过这种情况,但在IE中似乎工作得很好(可能是它无限期等待,你可以自己动作超时)。
我不相信客户端堆栈中有用于设置超时的API。
答案 2 :(得分:-1)
如果需要延长超时,则需要在Silverlight中使用Client Http堆栈。 Silverlight使用的标准浏览器堆栈具有浏览器设置的超时,您无法对其进行操作。
HttpWebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
这会将所有Http注册到客户端堆栈上。但是,使用此方法有一些限制。 This page有一个很好的图表,显示了两个堆栈之间的区别。