这个问题已经在这里有了答案:




已关闭8年。





[InvalidOperationException: Operation is not valid due to the current state of the object.]
   System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +2420862
   System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding) +58
   System.Web.HttpRequest.FillInFormCollection() +159

[HttpException (0x80004005): The URL-encoded form data is not valid.]
   System.Web.HttpRequest.FillInFormCollection() +217
   System.Web.HttpRequest.get_Form() +104
   System.Web.HttpRequest.get_HasForm() +9038959
   System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +97
   System.Web.UI.Page.DeterminePostBackMode() +69
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +135

一次又一次地收到此错误

我的代码在后面! 取消按钮位于DATAGRID 内部
if (((System.Web.UI.WebControls.Button)e.CommandSource).CommandName == "Cancel")
    {
        string value = (e.Item.FindControl("txtStatDesc") as System.Web.UI.WebControls.Label).Text;

        if (value.Equals("Sent", StringComparison.CurrentCultureIgnoreCase))
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('You can not cancel the dta because it is in sent mode. Cancellation refused');", true);

        }


       else if (value.Equals("Prepared", StringComparison.CurrentCultureIgnoreCase))
            Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('DEF');", true);

       else
            Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('xyz');", true);



    }

最佳答案

我猜这是您的datagrid造成的麻烦,因为该错误仅在表单中有1000个以上的数据元素时才会发生。 Microsoft在2011年添加了此限制,以解决拒绝服务利用的问题。

有关限制以及如何根据需要提高限制的更多信息can be found here

关于asp.net - 由于asp.net中对象的当前状态,因此操作无效。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12763932/

10-10 05:43