ASP.NETベース64文字列の無効な文字
-
24-10-2019 - |
質問
私は最近、私のサイトにエルマを実装しましたが、「ベース64文字列で無効な文字」エラーを頻繁に取得することに気付きました。私はそれを自分で引き起こしたことがなく、私たちのユーザーの誰もそれについて不平を言っていないので、何が起こっているのかわかりません。私がそれについて見つけることができた小さなことから、それはビューステートが大きくなりすぎたり、腐敗したりするか何かになっているように思われます。何がこれを引き起こし、どのようにそれを防ぐかを知っている人はいますか?これが私がYSODの適切な行であると私が信じているものです。
[FormatException: Invalid character in a Base-64 string.]
[ViewStateException: Invalid viewstate.
[HttpException (0x80004005): The client disconnected.]
これらのエラーについて何かできることはありますか、それともエルマでそれらをフィルタリングする必要がありますか?
解決
物事の構成方法かもしれません。これを見てください:
アップデート
発生している場所を識別してみてください。いくつかの潜在的な原因があるかもしれません:
asp.netとc#を使用した「ベース64文字列の無効な文字」
一日の終わりに、あなたが言うように、それが生産に問題を引き起こしていない場合、これらのエラーを除外することができます。 enabableViewStateMacをfalseに設定してみませんか?
他のヒント
私の経験では、このエラーは、ユーザーがポストバックをトリガーするボタンをダブルクリックすることにより引き起こされる傾向があります。 2番目のポストバック要求は、最初の候補者をキャンセルします。最初のリクエストのビューステートは部分的にのみ提出されているため、無効ですが、切断されているため、エラーをブラウザに送信することはできません。これにより、トップレベルのエラーがトリガーされます。これは、ユーザーが2回のことをしている場合に問題を引き起こす場合、より大きな問題になる可能性があります。それ以外の場合、これらのエラーは単純にフィルタリングできます。エルマで同様のエラーをフィルタリングする良い例を次に示します。https://stackoverflow.com/a/2549509/267448
ASP.NET WebFormsを使用している場合、ポストバック中にトリガーコントロールを無効にするコードを次に示します。http://disturbedbuddha.wordpress.com/2007/12/10/disabling-a-trigger-control-during-asynchronous-postback/
HTMLを無効にする場合は注意してくださいu003Cinput type="submit">ボタンは、フォーム変数から除外されているため、サーバー側のクリックイベントは発生しません。それをanに変更しますu003Cinput type="button">それを修正します。 WebFormsでは、そうなるでしょうu003Casp:Button UseSubmitBehavior="False" />。
上記はWebforms Ajaxページで動作しますが、他のページのために私が思いついたJQueryの少しもあります。
$(function () {
$("a[href^='javascript']").click(function (event) {
if (event.target.disabled)
return false;
event.target.disabled = true;
setTimeout(function () {event.target.disabled = false;}, 250);
});
});