简体   繁体   English

ajax post asp.net core 3.1 服务器端问题

[英]ajax post asp.net core 3.1 server side problme

my application running smoothly in local environment.我的应用程序在本地环境中运行顺利。 When the size of the array posted on the server side increases, it gives an error of 400. (I don't have any problems when posting an array with 53 rows. An array with 566 rows is not posted).当服务器端发布的数组大小增加时,会出现400的错误。(发布53行的数组时我没有任何问题。没有发布566行的数组)。 Ajax side, Action and error are given below. Ajax 方面,Action 和错误如下。 (I post to the same database in the local environment.) (我在本地环境中发布到同一个数据库。) 在此处输入图像描述

$("body").on("click", "#btnSubmitTest", function () {

Swal.fire({
    title: 'Test tamamlanacaktır. Onaylıyor musunuz ?',
    showCancelButton: true,
    confirmButtonText: 'Evet',
    cancelButtonText: `Hayır`,
    customClass: {
        confirmButton: "btn btn-primary",
        cancelButton: "btn btn-danger"
    }
}).then((result) => {
    if (result.isConfirmed) {
        var qn = document.getElementById("hiddenQNo").value;
        var Answers = new Array();
        var SendedTestId = document.getElementById("hiddenSendedTestId").value
        var isNull = 0;
        var nullArray = new Array();
        for (let i = 1; i <= qn; i++) {
            var answerVal = table.$('#' + i+":checked").serialize();
            const myArray = answerVal.split("=");
            if (myArray[1] == undefined) {
                isNull = isNull + 1;
                nullArray.push(i);
            }
            var answerModel;
            answerModel = ({
                TestOrder: i,
                Answer: myArray[1],
                SendedTestId: SendedTestId
            });
            Answers.push(answerModel);
            myArray.pop();
        }
        var Data = { 'TestAnswer': Answers }
        if (isNull == 0) {
            $.ajax({
                url: '/StartTest/SubmitTest',
                type: 'post',
                data: Data,
                dataType: 'json',
                contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("XSRF-TOKEN",
                        $('input:hidden[name="__RequestVerificationToken"]').val());
                },
                success: function (data) {
                    Swal.fire({
                        icon: 'success',
                        text: data.responseText,
                        showConfirmButton: false,
                    })
                    setTimeout(function () {
                        window.location.href = "StartTest/Completed"
                    }, 2000)
                }
            });
        }
            else {
            Swal.fire({
                icon: 'error',
                text: 'Tüm soruları cevaplamanız gerekmektedir! '+nullArray+' '+'boş bırakılmıştır.',
                confirmButtonColor: '#3085d6'
            })
            }
    }
})

}); });

 [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> SubmitTest(List<TestAnswer> testAnswer)
    {
        try
        {
            if (testAnswer != null)
            {
                var UrlModel = _context.UrlModels.Where(x => x.SendedTestId == testAnswer[0].SendedTestId).FirstOrDefault();
                UrlModel.CompletedDate = DateTime.Now;
                _context.UrlModels.Attach(UrlModel);
                _context.SaveChanges();
                _context.TestAnswers.AddRange(testAnswer);
                _context.SaveChanges();

                return Json(new { success = true, responseText = "Sonuçlar kaydedildi!", id=UrlModel.SendedTestId });
            }
            else
            {
                return Json(new { success = false, responseText = "Bir Hata Oluştu." });
            }
        }
        catch (Exception)
        {

            return Json(new { success = false, responseText = "Bir Hata Oluştu." });
        }
       
    }

try increasing size limit of your requests, add a webconfig to your project and add this code尝试增加您的请求的大小限制,将 webconfig 添加到您的项目并添加此代码

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <security>
      <requestFiltering>
        <!-- This will handle requests up to 50MB -->
        <requestLimits maxAllowedContentLength="52428800" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM