2

我们的一个应用程序中有一个报告生成器,它是在 .NET 2.0 中构建的

每当我们尝试在 IE 10 中运行报告时,我们都会收到带有以下消息的服务器错误:

Invalid postback or callback argument.  Event validation is enabled using 
<pages enableEventValidation="true"/> in configuration or 
<%@ Page EnableEventValidation="true" %> in a page.  
For security purposes, this feature verifies that arguments to postback or callback 
events originate from the server control that originally rendered them.  If the data is 
valid and expected, use the ClientScriptManager.RegisterForEventValidation method in 
order to register the postback or callback data for validation. 
Description: An unhandled exception occurred during the execution of the current web 
request. Please review the stack trace for more information about the error and where it 
originated in the code. 


Exception Details: System.ArgumentException: Invalid postback or callback argument.      
Event validation is enabled using <pages enableEventValidation="true"/> 
in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security   
purposes, this feature verifies that arguments to postback or callback events originate 
from the server control that originally rendered them.  If the data is valid and 
expected, use the ClientScriptManager.RegisterForEventValidation method in order to 
register the postback or callback data for validation.

Source Error: 


 An unhandled exception was generated during the execution of the current web request. 
Information regarding the origin and location of the exception can be identified using   
the exception stack trace below.  

Stack Trace: 

[ArgumentException: Invalid postback or callback argument.  Event validation is enabled 
using <pages enableEventValidation="true"/> in configuration or <%@ Page 
EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies 
that arguments to postback or callback events originate from the server control that 
originally rendered them.  If the data is valid and expected, use the 
ClientScriptManager.RegisterForEventValidation method in order to register the postback 
or callback data for validation.]
   System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +8636377
   System.Web.UI.WebControls.ListBox.LoadPostData(String postDataKey, NameValueCollection postCollection) +360
   System.Web.UI.WebControls.ListBox.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +13
   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +343
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1743


--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.5420; ASP.NET      
Version:2.0.50727.5420 

仅当我们在 IE 10 中运行报告时才会发生此错误。

如果我们使用任何其他 IE 版本或任何其他浏览器,我们不会收到任何错误并且报告运行良好。

根据 Microsoft 文档,这可以在 .NET 3 及更高版本上解决。但是我们已经有了 .NET 3.5,但仍然不能在 IE 10 上运行。

这是页眉:

<%@ Page EnableEventValidation="true" Language="VB"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Client_Id.Value = Request.QueryString("Client_Id")
    Project_Id.Value = Request.QueryString("Project_Id")
    System_Id.Value = Request.QueryString("System_Id")
    Report_Page_Heading.Text = Replace(Request.QueryString("H"), "'", "")


    PartExportFields.SelectParameters.Add("Client_Id", Replace(Client_Id.Value, "'", ""))
    PartExportFields.SelectParameters.Add("Project_Id", Replace(Project_Id.Value, "'", ""))
    PartExportFields.SelectParameters.Add("System_Id", Replace(System_Id.Value, "'", ""))

    SavedCustomReports.SelectParameters.Add("Client_Id", Replace(Client_Id.Value, "'", ""))
    SavedCustomReports.SelectParameters.Add("Project_Id", Replace(Project_Id.Value, "'", ""))
    SavedCustomReports.SelectParameters.Add("System_Id", Replace(System_Id.Value, "'", ""))

    ListBox1.SelectedValue = Request.QueryString("edit")
End Sub

Protected Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)

End Sub

Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)

End Sub

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)

    Page.ClientScript.RegisterForEventValidation("Client_Id", Replace(Client_Id.Value, "'", ""))
    Page.ClientScript.RegisterForEventValidation("Project_Id", Replace(Project_Id.Value, "'", ""))
    Page.ClientScript.RegisterForEventValidation("System_Id", Replace(System_Id.Value, "'", ""))
    MyBase.Render(writer)
End Sub    
</script>

任何想法或帮助都会很棒。

提前致谢!

4

2 回答 2

0

我在使用 IE 10 时遇到了类似的问题。IE 10 不能很好地处理网络表单(具有讽刺意味的是,Microsoft 技术不适用于 Microsoft 技术)。请参阅此链接。您可以应用一些机器范围的补丁来解决一些问题。此外,在 IE 10 上使用一些 Microsoft Ajax 的东西根本不起作用。我能够解决这个问题的唯一方法是发送一个标题,告诉 IE 在 IE 9 模式下运行页面。

于 2013-04-04T14:30:06.343 回答
0

我找到的唯一解决方案是运行 Windows 更新。

这为 IE 下载了所有必要的修复程序。

之后错误就消失了。

于 2013-09-12T11:25:08.797 回答