我有一個使用Microsoft RPC進行進程間通信的程序。當與[在,字符串]像這樣(MIDL符號)參數的方法的調用:「呼叫失敗並且未執行」
interface IOurInterface
{
error_status_t rpcMethod([in, string] const WCHAR* parameter);
}
被調用它通常是成功的。但是,如果參數字符串足夠長(超過大約300萬個字符),則調用失敗,並且RPC_S_CALL_FAILED_DNE(「遠程過程調用失敗並且未執行。」)。這當然取決於字符串的長度。如果字符串在限制範圍內,則在相同條件下的相同調用總是成功,如果字符串較長,則總是失敗。它看起來像極限是系統或機器相關的。
有沒有人觀察過這種行爲,以及可能的解決方案是什麼(不縮短參數)?
的原因是,我們發送超大對象的XML表示,不希望想到優化它(但它絕對有可能)。所以如果有一個簡單的方法來繞過這個問題,它會非常方便。 – sharptooth 2009-04-09 12:55:50
那麼,分段是一種可能性:將參數限制爲會話標識,最後標記和(例如)1M文本。您必須在源代碼處對您的XML進行細分,並在目標位置將它們合併在一起。不是我的第一選擇,而是一個應該盡最大努力工作的快速和骯髒的解決方案 – paxdiablo 2009-04-09 13:00:04