您好我已經使用Zeroc Ice通信庫(v3.4.2)編寫了一個C#客戶端/服務器應用程序。爲什麼我得到Ice :: MemoryLimitException,即使有Ice.MessageSizeMax = 2000000
我從服務器傳輸一系列對象,然後以表格形式在客戶端中顯示它們。夠簡單。
我定義以下的片類型
enum DrawType { All, Instant, Raffle };
struct TicketSoldSummary {
int scheduleId;
DrawType dType;
string drawName;
long startDate;
long endDate;
string winningNumbers;
int numTicket;
string status;
};
sequence<TicketSoldSummary> TicketSoldSummaryList;
interface IReportManager {
[..]
TicketSoldSummaryList getTicketSoldSummary(long startTime, long endTime);
};
當我把這種方法通常工作正常,但偶爾(大約的25%的時間)呼叫者得到一個冰:: MemoryLimitException。我們通常每次運行2-3個客戶。
我在互聯網上搜索的答案,我被告知增加Ice.MessageSizeMax,我做了。我已將MessageSizeMax增加到2,000,000 Kb,但它沒有任何區別,我只用31,000條記錄(大約1.8 Megs的數據)進行了測試,仍然得到Ice.MemoryLimitException。 1.8 Megs不是很大!
我做錯了什麼,或者Zeroc Ice有臭蟲嗎?
非常感謝任何能提供幫助的人。
您是否確定在什麼情況下引發此異常?你能看看這個庫的源代碼嗎? –
感謝您的回覆。當數據大小大於MessageSizeMax時,應該會發生此錯誤,但在我看來,它似乎與網絡速度更相關。例如通過VPN,我得到錯誤的90%的時間,但通過局域網只有25%的時間 –
這將是有用的,如果你也可以發佈你的配置文件。例如,是否在所有組件(服務器,客戶機,Glacier2路由器,如果您正在使用它)上設置MessageSizeMax?查看異常以瞭解哪個組件正在投擲也很好。 – Josh