調用我的Silverlight在我的Silverlight應用程序中啓用WCF服務,偶爾用戶會超時。提高服務客戶端響應時間的最簡單方法是什麼?Silverlight異步超時錯誤
拋出確切的例外是:System.TimeoutException:[HttpRequestTimedOutWithoutDetail]
感謝
調用我的Silverlight在我的Silverlight應用程序中啓用WCF服務,偶爾用戶會超時。提高服務客戶端響應時間的最簡單方法是什麼?Silverlight異步超時錯誤
拋出確切的例外是:System.TimeoutException:[HttpRequestTimedOutWithoutDetail]
感謝
這可以在Silverlight應用程序的ServiceReference.ClientConfig文件的節點中設置。
這可以設置,但有一個由底層HTTP庫(我認爲它的五分鐘)定義的上限。請注意,使用較高的值將回落到上限值。另外,請注意,您可能還需要在服務器上配置超時。
而不是改變超時,我認爲你應該實現從Silverlight應用程序到服務器的基於計時器的回調,以便會話不會過期。這將消除所有應用程序的更長超時的開銷。
這裏接受的答案不適合我。相反,我不得不將基礎通道投入IContextChannel,並在其上設置OperationTimeout。
要做到這一點,我必須創建一個帶有部分類的新文件,該文件與ServiceReference的名稱相匹配。在我的情況下,我有一個PrintReportsService。代碼如下。
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace RecipeManager.PrintReportsService
{
public partial class PrintReportsClient : System.ServiceModel.ClientBase<RecipeManager.PrintReportsService.PrintReports>, RecipeManager.PrintReportsService.PrintReports
{
public void SetOperationTimeout(TimeSpan timeout)
{
((System.ServiceModel.IContextChannel)base.Channel).OperationTimeout = timeout;
}
}
}
然後,當我創建客戶端,我做到以下幾點:
PrintReportsService.PrintReportsClient client = new RecipeManager.PrintReportsService.PrintReportsClient();
client.SetOperationTimeout(new TimeSpan(0, 4, 0));
這爲我做!有更多的信息可用here,但這篇文章中的代碼片段不能編譯。
我在IE固定這通過使兼容模式
默認值和例如:http://msdn.microsoft.com/en-us/library/ms731361.aspx – Entrodus 2013-05-31 07:19:02