コード ビハインドから .aspx ファイルの JavaScript 関数に文字列を渡そうとしています。「bla」などの短いダミー文字列を渡すと、これはうまく機能します。しかし、完全な例外メッセージ + スタック トレースを渡すと、プログラムがハングし、JavaScript 関数に入りません。
これを達成しようとしている方法は次のとおりです。
ScriptManager.RegisterStartupScript(this, typeof(string), "loading log message popup", String.Format("LogMessagePopup('{0}')", logMessage), true);
私のサーバー側には、LogMessagePopup JavaScript 関数があります。
function LogMessagePopup() {
...
JavaScript 関数の内容は問いません。
おそらく問題は、logMessage が非常に長いことです。これは、4KB を超える完全な例外およびスタック トレースです。
短いメッセージを渡すと、コードは正常に動作します。
特殊文字にも問題がある可能性がありますが、logMessage.replace を使用して JavaScript の特殊文字をエスケープした後も問題は解決しません。
サーバー側のコードに POST 経由で長い文字列を渡すことができると読んでいますが、これが私が探している解決策でさえある場合、方法がわからないため、これを行う方法がわかりません具体的には、JavaScript LogMessagePopup 関数に渡します。弦は途中でどこかで失われます。