У меня была такая же проблема.Локально работал нормально, но случайный производственный пользователь каким-то образом отправлял страницу с частичными данными формы.
Из журнала я мог видеть, что HttpRequestFormVariables выглядел нормально до некоторой точки, а затем значения становились пустыми, что приводило ксайт бросать необработанное исключение.
ctl00 $ MainContentPlaceHolder $ Foo $ rptForm $ CTL01 $ txtFormFieldId = 3815 ctl00 $ MainContentPlaceHolder $ Foo $ rptForm $ ctl02 $ txtFormFieldId = 3816 ctl00 $ MainContentPlaceHolder $ Foo $ rptForm $ctl03 $ txtFormFieldId = 3817 ctl00 $ MainContentPlaceHolder $ Foo $ rptForm $ ctl04 $ txtFormFieldId = 3818 ctl00 $ MainContentPlaceHolder $ Foo $ rptForm $ ctl05 $ txtFormFieldId = ctl00 $ MainContentPlaceHolder $ Foo $ rptForm $ ctl05 $ txtFormFieldId =
Единственный способ воспроизвести его - добавить Javascript на страницу и отправить его до полной загрузки.
<script type="text/javascript">
$("input[id$='btnSubmit']").click();
</script>
Я подозреваю, что мне потребуется отправить btnSubmit обратно с сервера вотключить состояние, а затем включить его из Javascript после завершения загрузки страницы.
if (btnSubmit.Enabled)
{
btnSubmit.Enabled = false;
string script = "$(document).ready(function() {$(\"input[id$='" + btnSubmit.ClientID + "']\").removeAttr('disabled');});";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "EnableSubmitButton", script, true);
}