4

私は MVC3 アプリで Rotativa を使用して PDF をメモリ ストリームに生成し、それを電子メールの添付ファイルとして送信しています。これは正常に動作しますが、非常に遅い (たった 1 人のユーザーで約 5 ~ 7 秒) ため、ユーザーが大きな遅延に悩まされないように、別のスレッドに入れようとしました。

私が直面している問題は、Rotativa がメモリ ストリームにデータを生成するためにコントローラー コンテキストを必要とすることです。つまり、データを別のスレッドに入れてユーザーに通知を返そうとすると、コンテキストが破棄され、 pdf の生成は失敗します。

残念ながら、私はサーバー側で電子メールの検証チェックを行い、必要に応じて true/false を返します。false は、ユーザーに修正して再試行するように促します。これは、電子メールが常に有効であると想定できないことを意味します (jquery で実行できますが、それをオフにして送信しようとしても、エラー メッセージは表示されません)。

これまでのところ、私は試しました:

  • 新しいスレッドを作成してコンテキストを渡す
  • コンテキストを新しい変数にコピーして複製する
  • コンテキストをシリアライズし、ストリームを新しいスレッドに渡し、デシリアライズします (残念ながら、コンテキストはシリアライズできません)。

他のアイデアはありますか?

4

1 に答える 1