सी # पोस्ट AJAX खाली json परिणाम

Aug 19 2020

मैं एक पोस्ट करने के लिए एक पोस्ट अजाक्स अनुरोध करता हूं और पृष्ठ को फिर से लोड किए बिना एक परिणाम देता हूं।
इसके लिए मैं JSON रिजल्ट का उपयोग करता हूं, समस्या यह है कि जब मेरे एक्शन "foo.DoSyncAction (id)" को निष्पादित करने में कुछ समय लगता है, तो वापस आए संदेश शून्य हैं।
उदाहरण के लिए जब कोई अपवाद उठाया जाता है, तो अपवाद पकड़ा जाता है, लेकिन उसका संदेश शून्य होता है।

एक ही बात तब होती है जब कोई अपवाद नहीं फेंका जाता है, "एक्शनResult" शून्य है।
यदि मैं एक ऐसी कार्रवाई का उपयोग करता हूं जिसमें कम समय लगता है, तो दिए गए संदेश शून्य या रिक्त नहीं हैं।
और यह डिबग मोड में नहीं होता है, मेरे पृष्ठ पर वापस आया संदेश शून्य नहीं है।
मुझे लगता है कि मैं भूल गया या मैं कुछ गलत कर रहा हूं, लेकिन मैं यह पता नहीं लगा सकता कि क्या गलत है।

[HttpPost]
public JsonResult SomeAction(int id)
{
    try
    {
        Foo foo = new Foo();
        var actionResult = foo.DoSyncAction(id);

        return Json(new { ok = true, data = actionResult }, JsonRequestBehavior.AllowGet); ;
    }
    catch (Exception ex)
    {

        return Json(new { data = ex == null ? "null ex" : (string.IsNullOrEmpty(ex.Message) ? "this exception is empty" : ex.Message) }, JsonRequestBehavior.AllowGet);
    }
}

मेरा AJAX प्रश्न:

$.ajax({
    url: '@Url.Action("SomeAction", "MyController")',
    dataType: 'json',
    data: { id: myID },
    type: 'POST',
    success: function (response) {
        if (response.ok) {
            // When everything is ok
            console.log(response.data);
        } else {
            // When an exception is thrown
            console.log("An error occurred :  " + response.data);

        }
    },
    error: function (error) {
        console.log("An error occurred :  " + error.responseText);
    }
});

यहां इसी तरह की स्थिति का एक उदाहरण है: dotnetfiddle.net/cG2L0u मैं 10 सेकंड प्रतीक्षा के साथ Sagnalrac उदाहरण का उपयोग करता हूं, और मेरी समस्या हुई। आइटमों की सूची अब प्रदर्शित नहीं होती है और कंसोल.लॉग एक रिक्त स्ट्रिंग देता है। मैं .NET 4.8 के साथ ASP MVC 5 का उपयोग कर रहा हूं

जवाब

Tanguy Aug 23 2020 at 17:01

मैंने अपनी समस्या हल कर ली, लेकिन मुझे अभी भी कुछ गलतफहमियां हैं।

मेरी विधि विधि को निष्पादित करने वाले खाते से व्यवस्थित रूप से एक अपवाद देता है (इसीलिए यह डिबग में काम करता है, जबकि एक वेब सर्वर पर ऐसा नहीं होता है, क्योंकि उपयोग किए गए खाते अलग हैं)।

अजीब बात यह है कि मेरी विधि एक अपवाद को फेंकती है, मैं इसे पकड़ने और मेल द्वारा भेजने का प्रबंधन भी करता हूं। लेकिन जब नियंत्रक अपवाद को पकड़ता है, तो वह खाली या अशक्त है। मैं इस समस्या पर करीब से नज़र डालने की कोशिश करूँगा।

एक बार जब मैंने समस्या को ठीक कर लिया, तो मैंने 2 मिनट का समय जोड़ने की कोशिश की, और कोई समस्या नहीं हुई (मुझे लगता है कि उदाहरण में, डॉटनेटफिल्ड का मेरा एक अलग विन्यास है, यही कारण है कि कोई अपवाद नहीं दिखा)।