我正在运行繁重的WCF RIA服务操作,并且在客户端Silverlight应用程序上遇到这样的错误:
Uncaught Error: Unhandled Error occurred in Silverlight Application:
Submit operation failed. Для запроса HTTP к
"https://localhost/MyProject/ClientBin/myservice.svc/binary" has exceeded the allotted timeout. The time allotted to this operation may have been a portion of a longer timeout.
Stack Trace:
в System.Windows.Ria.OperationBase.Complete(Exception error)
в System.Windows.Ria.SubmitOperation.Complete(Exception error)
в System.Windows.Ria.DomainContext.CompleteSubmitChanges(IAsyncResult asyncResult)
в System.Windows.Ria.DomainContext.<>c__DisplayClassd.<SubmitChanges>b__5(Object )我在执行的1分钟内就得到了这样的超时。
我的上下文是这样的:
[EnableClientAccess()]
public class ConfigService : LinqToEntitiesDomainService<MyEntityFrameworkEntities>下面是代码截图:

发布于 2013-05-17 17:08:25
本主题中讨论的每个设置都是在绑定本身上进行的,可以在代码中进行,也可以在配置中进行。下面的代码演示如何在自承载服务的上下文中以编程方式设置WCF绑定的超时。
public static void Main()
{
Uri baseAddress = new Uri("http://localhost/MyServer/MyService");
try
{
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService));
WSHttpBinding binding = new WSHttpBinding();
binding.OpenTimeout = new TimeSpan(0, 10, 0);
binding.CloseTimeout = new TimeSpan(0, 10, 0);
binding.SendTimeout = new TimeSpan(0, 10, 0);
binding.ReceiveTimeout = new TimeSpan(0, 10, 0);
serviceHost.AddServiceEndpoint("ICalculator", binding, baseAddress);
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
}
catch (CommunicationException ex)
{
// Handle exception ...
}
}下面的示例显示如何在配置文件中配置绑定的超时。
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding openTimeout="00:10:00"
closeTimeout="00:10:00"
sendTimeout="00:10:00"
receiveTimeout="00:10:00">
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>您应该为RIA服务使用edi
在域上下文创建后执行操作:
((WebDomainClient<LibraryDomainContext.ILibraryDomainServiceContract>)this.DomainClient).ChannelFactory.Endpoint.Binding.SendTimeout = new TimeSpan(0, 5, 0);或者是分部类
public partial class LibraryDomainContext
{
partial void OnCreated()
{
if(DesignerProperties.GetIsInDesignMode(App.Current.RootVisual))
((WebDomainClient<LibraryDomainContext.ILibraryDomainServiceContract>)this.DomainClient).ChannelFactory.Endpoint.Binding.SendTimeout = new TimeSpan(0, 5, 0);
}
}发布于 2013-05-17 16:23:13
当从客户端调用时,您希望增加sendTimeout属性。
closeTimeout =连接关闭的时间间隔
openTimeout =打开连接的时间间隔
receiveTimeout =服务允许连接处于非活动状态的时间间隔
sendTimeout =客户端等待响应的时间间隔
https://stackoverflow.com/questions/16604053
复制相似问题