it-swarm.asia

asp.net: وسيطة إعادة النشر أو رد الاتصال غير صالحة

سأتعامل مع هذا الخطأ:

Server Error in '/' Application.

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) +8627417
   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) +346
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1743

Version Information: Microsoft .NET Framework Version:2.0.50727.3623; ASP.NET Version:2.0.50727.3618

ماذا يعني؟

هنا هو الكود الخاص بي:

<%@ Page EnableEventValidation="true" Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="EnterData.DataEntry.WebForm1" %>    

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

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js" type="text/javascript"></script>

    <link href="../niceforms/niceforms-default.css" rel="stylesheet" type="text/css" />
    <script src="../niceforms/niceforms.js" type="text/javascript"></script>

    <link href="../jquery-ui-1.8.16.custom.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
        .list-problems {
        height:600px !important;
        width:200px !important;
        display:inline-block;
    }
    </style>

    <script>
        jQuery(function($) {
        //$("#occurrence_dateTextBox").mask("99/99/9999");
        //$("#<%= report_dateTextBox.ClientID %>").mask("99/99/9999");
        $("#<%= occurrence_dateTextBox.ClientID %>").datepicker();
        $("#<%= report_dateTextBox.ClientID %>").datepicker();
        //$(".datepicker").datepicker(); 

    });
    $(function() {
        $.get('../file.txt', function(data) {
            var output = data.split('\n'),
            tmp = '';
            for (i = 0; i < output.length; i++) {
                tmp += '<option value=' + output[i] + '>' + output[i] + '</option>';
            }
            $('#lstProblems').html(tmp);

        });
    });

    $(function() {
        $("select").multiselect();
    });

    function getselectedproblems() {
        var selectedLanguages = new Array();
        jQuery('#lstProblems option:selected').each(function() {
            selectedLanguages.Push(jQuery(this).val());
        });
    }

    </script>

</head>
<body><div id="container">
    <form id="form1" runat="server" class="niceform">

        <fieldset>

        <legend>Section A</legend>

        <dl>

            <dt><label for="occurrence_dateTextBox" >Occurrence Date:</label></dt>
            <dd><asp:TextBox ID="occurrence_dateTextBox" runat="server" size="50"/></dd>
        </dl>

        <dl>

            <dt><label for="report_dateTextBox">Report Date:</label></dt>
            <dd><asp:TextBox ID="report_dateTextBox" runat="server" size="50"/></dd>
        </dl>

        <dl>

            <dt><label for="spec_idTextBox">Specimen ID:</label></dt>
            <dd><asp:TextBox ID="spec_idTextBox" runat="server" size="50"/></dd>
        </dl>

        <dl>

            <dt><label for="batch_idTextBox">Batch ID:</label></dt>
            <dd><asp:TextBox ID="batch_idTextBox" runat="server" size="50"/></dd>
        </dl>

        <dl>

            <dt><label for="report_byTextBox">Report By:</label></dt>
            <dd><asp:TextBox ID="report_byTextBox" runat="server" size="50"/></dd>
        </dl>

        <dl>

            <dt><label for="identified_byTextBox">Identified ID:</label></dt>
            <dd><asp:TextBox ID="identified_byTextBox" runat="server" size="50"/></dd>
        </dl>

        </fieldset>

        <fieldset>
        <legend>Section B</legend>

        <dl>

            <dt><label for="problemTextBox">Problem:</label></dt>
            <dd><asp:TextBox ID="problemTextBox" runat="server" size="50"/></dd>


        </dl>

        <dl>
            <dt><label for="lstProblems">Problems List:</label></dt>
            <dd>
                <asp:ListBox ID="lstProblems" runat="server" SelectionMode="Multiple" CssClass="list-problems"></asp:ListBox>
            </dd>

        </dl>  

        <dl>
                <dd><select size="8" multiple="true" >
                <optgroup label="Europe">
                    <option>United Kingdom</option>
                    <option>Luxembourg</option>
                </optgroup>    
                <optgroup label="Asia">
                    <option>India</option>
                    <option>Dubai</option>
                </optgroup>
            </select> </dd>    
        </dl>
        <dl>
            <asp:ListBox ID="ListBox1" runat="server" DataSourceID="SqlDataSource1" 
                DataTextField="batch" DataValueField="batch" SelectionMode="Multiple" 
                Height="100px" Width="329px"></asp:ListBox>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:LOM %>" 
                SelectCommand="SELECT [batch] FROM [lom_batch]"></asp:SqlDataSource>
        </dl>

        </fieldset>

        <fieldset>
        <legend>Section C</legend>
        <dl>

            <dt><label for="section_c_issue_error_identified_byTextBox">Issue/Error Identified By:</label></dt>
            <dd><asp:TextBox ID="section_c_issue_error_identified_byTextBox" runat="server" size="50"/></dd>


        </dl>

        <dl>

            <dt><label for="section_c_commentsTextBox">Comments:</label></dt>
            <dd><asp:TextBox ID="section_c_commentsTextBox" runat="server" size="50"/></dd>


        </dl>       

        </fieldset>

        <fieldset>
        <legend>Section D</legend>
        <dl>

            <dt><label for="section_d_investigationTextBox">Investigation:</label></dt>
            <dd><asp:TextBox ID="section_d_investigationTextBox" runat="server" size="50"/></dd>


        </dl>

        </fieldset>

        <fieldset>
        <legend>Section E</legend>
        <dl>

            <dt><label for="section_e_corrective_actionTextBox">Corrective Action:</label></dt>
            <dd><asp:TextBox ID="section_e_corrective_actionTextBox" runat="server" height="200" TextMode="MultiLine" size="50"/></dd>


        </dl>


        </fieldset>

        <fieldset>
        <legend>Section F</legend>
        <dl>

            <dt><label for="section_f_commentsTextBox">Comments:</label></dt>
            <dd><asp:TextBox ID="section_f_commentsTextBox" runat="server" size="50"/></dd>


        </dl>

        </fieldset>

        <fieldset>
        <legend>Pre-Analytical</legend>
        <dl>

            <dt><label for="prePracticeCodeTextBox">Practice Code:</label></dt>
            <dd><asp:TextBox ID="prePracticeCodeTextBox" runat="server" Visible="false"/></dd>


        </dl>

        <dl>

            <dt><label for="preContactTextBox1">Contact:</label></dt>

            <dd><asp:TextBox ID="preContactTextBox" runat="server" Visible="false"/></dd>


        </dl>

        <dl>
            <dt><label for="CheckBox1">PreAnalytical?</label></dt>
            <dd> <asp:CheckBox ID="CheckBox1" runat="server" CausesValidation="false"
                            Visible="true" AutoPostBack="true" OnCheckChanged="CheckBox1_CheckedChanged"/></dd>
        </dl>

        </fieldset>

        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="SubmitData"  OnClientClick="JSfunction()"/>

    </form>

</div></body>
</html>

ما الخطأ الذي افعله؟

أتلقى هذا الخطأ بعد الضغط على زر الإرسال.

43
l--''''''---------''''''''''''

في ملف aspx يجب عليك وضع السطر الأول كما يلي:

<%@ Page EnableEventValidation="false" %>

إذا كان لديك بالفعل شيء مثل <%@ Page حتى مجرد إضافة الباقي => EnableEventValidation="false" %>

أوصي بعدم القيام بذلك.

67
Royi Namir

إذا نظرت إلى الأسطر الأولى من النص ، فيمكنك الحصول على الخطأ.

تتحقق هذه الميزة من أن وسائط إعادة النشر أو أحداث رد الاتصال تنشأ من عنصر تحكم الخادم الذي قدمها في الأصل

أنت تقوم بتحرير القائمة المنسدلة lstProblems ديناميكيًا ، لذلك عندما تقوم بإعادة النشر ، يقول ASP.NET "تحذير! الإدخالات غير الصالحة في القائمة المنسدلة!" والنزوات خارج رمي هذا الخطأ. يجب عليك تحديد ما إذا كان إيقاف تشغيل التحقق من صحة الحدث يعد حلاً جيدًا ، لكنني سأبحث فيه قبل القيام بذلك ، لأن الفكرة من وراءه هي جعل موقعك أكثر أمانًا مجانًا.

في ما يلي إجابة stackoverflow أخرى تقوم بعمل أفضل بكثير تشرح ما يجب فعله مني: وسيطة إعادة النشر أو رد الاتصال غير صالحة. يتم تمكين التحقق من صحة الحدث باستخدام '<pages enableEventValidation = "true" />'

31
Dave L

شيء آخر يجب الانتباه إليه ، هو أن هذا الخطأ يمكن أن يحدث إذا كان لديك تداخل

<form

علامة داخل النموذج .Net.

16
TheAlbear

إذا كان لديك رمز في حدث Page_Load () الخاص بك. حاول إضافة هذا:

if (!Page.IsPostBack)
{ 
//your code here 
}
16
Syed Ali Taqi

واجهت نفس المشكلة مع أحد عمالقة البيانات ، فأنا "ملزمة ديناميكيًا" ، مضيفًا EnableViewState = "false" تهدئة رسالة الخطأ. أتأكد من أنني ملتزم برمجيًا ، ثم يتم ملء عنصر التحكم في كل منشور مرة أخرى ، ولا تظهر حالة العرض " يجب الحفاظ عليها إذا كانت قد تتغير أو لا تتغير في كل مكالمة مرة أخرى ، وهذا هو السبب في أنني ملزمة بشكل حيوي ، لول.

8
Corey

يمكن أن يحدث هذا الخطأ أيضًا بسبب المتداخلة <form> علامة في الصفحة الرئيسية غير مسموح بها.

<form id="someid"></form>

من المحتمل أن يكون هذا هو السبب في قيامك بالتقاط قالب ونسخ الرمز من مكان ما.

حل

يجب عليك كسر تعشيش <form> العلامة. يجب أن تصبح التالية

<form method="" name="form1">
  <form method="" name="form2>
  </form>
</form>

ينبغي أن تصبح

<form method="" name="form1">    
</form>

<form method="" name="form2>    
</form>
6
Hammad Khan

إضافة في أعلى الصفحة

protected void Page_Load(object sender, EventArgs e)
{    
    if (!Page.IsPostBack)
    {
        //Code display data
    }
}
4
Duc Tung

إذا قمت بتغيير UseSubmitBehavior="True" إلى UseSubmitBehavior="False" سوف تحل مشكلتك.

<asp:Button ID="BtnDis" runat="server" CommandName="BtnDis" CommandArgument='<%#Eval("Id")%>' Text="Discription" CausesValidation="True" UseSubmitBehavior="False" />
4
praveen

آه من المؤسف. منذ أن قمت بإضافتها أساسا العميل الجانب asp.net ضربات. من المؤسف أيضًا أنه يجب عليك إيقاف تشغيل EventValidation لأن هناك بعض وسائل الحماية المهمة التي تساعد (على سبيل المثال الحقن الشرير في الصناديق المنسدلة). البديل الآخر هو جعل التحكم المركب الخاص بك ، والذي بالطبع يبدو أكثر قليلاً من الجهد المبذول. ربما أقوم بإيقاف تشغيل التحقق من صحة الحدث أيضًا ولكن كن حذرًا جدًا من عدم ثقتك في أي قيم من الصفحة يمكن استخدامها بطريقة سيئة عن طريق تغييرها ببساطة - مثل المفاتيح المخفية أو حقن sql من خلال مربعات التحرير والسرد ، إلخ.

3
Adam Tuliper - MSFT

يمكنك أيضًا ملء بياناتك في حدث العرض المسبق. بهذه الطريقة يمكنك الحفاظ على التحقق من الصحة والبقاء آمنين. هنا مثال باستخدام مكرر.

protected void Page_PreRender(object sender, EventArgs e)
     {
        List<Objects.User> users = Application.User.GetAllUsers();

        Repeater1.DataSource = users;
        Repeater1.DataBind();
      }
2
Pieter de Vries

يمكنك إضافة ViewStateMode = "معطل"

asp: UpdatePanel ID = "UpdatePanel1" runat = "server" ViewStateMode = "معطل"

1
Jawad Siddiqui

بعد حدوث هذه المشكلة على الخوادم البعيدة (الإنتاج ، الاختبار ، qa ، التدريج ، إلخ) ، ولكن ليس على محطات عمل التطوير المحلية ، وجدت أنه تم تكوين "تجمع التطبيقات" باستخدام RequestLimit بخلاف 0.

تسبب هذا في تجمع التطبيقات للتخلي عن والرد مع استثناء المذكورة في السؤال.

في مكان ما على طول الطريق الخاص بمشروع installshield الخاص بي ، تم تغيير تعريف تجمع التطبيقات الخاص به لاستخدام "3" (من المحتمل أن يكون مجرد خطأ أو سوء كتابة).

1
StingyJack

كان حل بلدي لإضافة:

ctlUpdatePanel.Update();

بعد سيطرة ملزمة بعد إعادة النشر. كان في updatepanel مع UpdateMode = "Conditional" السمة.

1
Tone Škoda

قد لا يكون هذا هو سبب مشكلتك ، لكنني لاحظت أنك تستخدم مجموعات optg في القائمة المنسدلة الخاصة بك ، لذلك أعتقد أن هذا قد يساعد شخصًا ما إذا انتهى به الأمر إلى هذه المشكلة. بالنسبة لي ، كنت بحاجة إلى إنشاء قائمة منسدلة من شأنها أن تقدم مع optgroups ، وانتهى بي الأمر باستخدام الإجابة المقبولة هنا ولكن في حين أن ذلك سيجعل التحكم بشكل صحيح ، إلا أنه أعطاني هذا الخطأ. كيف حصلت على ما هو مفصل في إجابتي هنا .

0
Doug F

كان لدي نفس المشكلة ، مربعي القائمة وزرين.

تم تحميل البيانات الموجودة في مربعات القائمة من قاعدة بيانات ويمكنك نقل العناصر بين الصناديق بالنقر فوق الأزرار.

كنت أحصل على إعادة نشر غير صالحة.

اتضح أنه كانت البيانات تحتوي على موجزات إرجاع سطر النقل فيه والتي لا يمكنك رؤيتها عند عرضها في مربع القائمة.

عملت بشكل جيد في كل متصفح باستثناء IE 10 و IE 11.

قم بإزالة موجزات خط نقل النقل وكلها تعمل بشكل جيد.

0
Nick B

واجهت مشكلة مماثلة بسبب لصق نسخة من صفحة أخرى ، ما حصلت عليه:

<form id="form1" runat="server">
    ...
    <form id="form2" runat="server">
    ....
    </form>
</form>

لقد قمت فقط بإزالة النموذج بمعرف = "form2" بداخل النموذج مع id = "form1" وتم حل المشكلة. هذا قد لا يكون مشكلتك ولكنه قد يكون شيئًا مشابهًا.

0
Eugene Bosikov