1

私が取り組んでいるプロジェクトは次のとおりです。 データを暗号化する Java Web サービス (Des、3Des) を持っています。データは C# アプリケーションから送信されます。サイズが 1MB のファイルを暗号化/復号化したい。例外が発生します。

ファイルはバイト [] にビット形式で配置され、暗号化/復号化のために Java Web サービスに送信されます。Webサービスがそれを行った後、暗号化/復号化されたデータを送り返す必要があります。

小さなファイルでは問題ありませんが、サイズが 1MB 以上のファイルでは C# アプリケーションで例外がスローされ、エラーには次のメッセージが表示されます: WebException was unhandled: The operation has timed out

このエラーは、約 1 分 40 秒後にスローされます。

StackOverflow に関するさまざまな投稿を読みましたが、それらは常に WebRequest と WebResponse で動作するようです。私はそれを扱っていません。Webサービスを呼び出すために使用するコードは次のとおりです。

public byte[] TEncode(byte[] input, byte[] key)
{
    return _webservice.TDesEncode(input, key);
}

この問題を解決するために私にできることはありますか?

編集 app.config ファイルで次のようにセッション タイムアウトを増やそうとしました。

<system.web>
<sessionState timeout="20"></sessionState>
</system.web>

前もって感謝します

4

4 に答える 4

0

エンコード関数 localy を呼び出して、エンコードに必要な時間を測定し、最大許容ファイル サイズを使用して最悪のケースを取得してみてください。

時間が最適な場合は、サービスのタイムアウトをその値まで増やします。

そうでない場合は、エンコード機能を最適化するか、クライアント/サーバー側でエンコードして、既に暗号化されたファイルを転送することをお勧めします。

サンプルでは、​​暗号化されていないバイト配列をおそらくリモートサービスに渡すため、最後のアプローチはセキュリティの観点から優れています。この場合、ネットワークトラフィックのスニッフィングに対して非常に脆弱です。

于 2012-10-22T18:39:58.287 に答える
0

データがサービスホストにヒットするまでのストリーミング時間中にタイムアウトが発生しているのか、実際の暗号化に時間がかかりすぎていないのかを確認する必要があると思います。暗号化の場合は、これを修正する必要があるかもしれません。

1MB でテストしていることは知っていますが、1GB でこれを LAN で実行している場合、ギガビット イーサネットを使用すると、サービス ホストに要求を送信するだけで、適切なネットワーク上で少なくとも 10 ~ 15 秒かかります。 .

于 2012-10-22T19:34:17.340 に答える
0

タイムアウトを増やす必要があるようです。説明と可能な修正については、このサイトを確認してください。

于 2012-10-22T18:30:12.267 に答える