0

.net Web サービスで WebMethod を呼び出しています。Windows プロセスが許可されている 2 GB の制限を超えているため、クライアントで OutOfMemoryException を引き起こすのに十分なデータを取り込むことができます。

締め切りがあるため、コードを追加して呼び出しを小さなチャンクに分割することでこれを解決したくありません。クライアントで LARGEADDRESSAWARE フラグを使用できますが、クライアントのプロセスにはまだ制限があります (3GB ~ 4GB)。現時点では、この方が良いとしか言​​えませんが、それで十分であるとは言えません (クライアントは、CD で顧客にリリースされる WinForm であるため、これは 1 回しか試していません)。 .

優れているのは、WebMethod を呼び出して、メソッドの結果を .NET コードの変数に書き込むのではなく、ハード ドライブ上のファイルに直接書き込む方法です。次に、ファイルから一度に 1 つのメモリに適したチャンクを読み取ることができました。私が知る限り、Web サービスにはこれを行う方法がありません。

Web サービスでこれを行う方法はありますか? 私の OOM の問題を解決するために考えつくことができる他の創造的な解決策はありますか?

4

1 に答える 1

0

書き込みたいディスクを指定していません。出力をサービス上のフォルダーに書き込み、ファイル共有を介してフォルダーを公開することも考えられます。サービスは、サーバー上の (一時) ファイルへのパスをクライアントに返します。

レガシー ASMX サービスについて話していると思いますか? 要求メッセージと応答メッセージの複数のコピーを作成するシリアライゼーションに問題があります。「Web 参照の追加」の代わりに、クライアントで「サービス参照の追加」を使用してみてください。

于 2013-02-06T14:15:09.057 に答える