You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击.cshtml保存按钮触发异常及400错误排查求助

问题排查请求

点击.cshtml页面的保存按钮时,代码进入catch块抛出异常,浏览器控制台返回400(Bad Request)错误。

错误详情

异常信息:

YBS.Data.Classes.Errors.AddOperationCanceledException: 'SELECT * FROM AccessControlDoorOpenPersonnel WITH(NOLOCK) WHERE Id=0YBS.Models.DelayControlDoorOpenPersonnelModel model insert operation was canceled (DataVInsertMisAuthority=false)

请求报错:

jquery.min.js:4 POST http://localhost:4000/kapigecis/GecisKontrolKapiAcmaPersonelKaydet 400 (Bad Request)

前端代码

function Kaydet() { 
    $('#formu').parsley().validate(); 
    let valid = $('#formu').parsley().isValid(); 
    let login = 0; 
    if ($('#login').val() === "on") { 
        login = 1; 
    } 
    if (valid) { 
        let talep = { 
            Id: parseInt($('#id').val()), 
            KapiId: parseInt($('#kapiId').val()), 
            KullaniciId: parseInt($('#kullaniciId').val()), 
            FonksiyonTusu: $('#fonksiyonTusu').val(), 
            Login: parseInt(login), 
        } 
        $.ajax({ 
            url: baseUrl + "kapigecis/GecisKontrolKapiAcmaPersonelKaydet", 
            headers: { 'Authorization': `Bearer ${token}`,'Content-Type': 'application/json' }, 
            method: 'POST', 
            cache: 'false', 
            data: JSON.stringify(talep), 
            success: function (data) { 
                data = JSON.parse(data); 
                if (data.length === 0) { 
                    Swal('Hata', 'Tanım organizasyon işlemi yapılamadı.', 'info'); 
                    return; 
                } 
                if (data) { 
                    toastr.success("Tanım organizasyon işlemi yapıldı"); 
                } else { 
                    Swal('İşlem yapılamadı', data.message, 'error'); 
                } 
                $('#form1').modal("hide"); 
                window.location.reload(); 
                dt.draw(); 
            }, 
            error: function (data) { 
                data = JSON.parse(data.responseText); 
                Swal('Internal Server Error', data.message, 'error'); 
            } 
        }); 
    } 
}

后端接口代码

[HttpPost("GecisKontrolKapiAcmaPersonelKaydet")] 
public IActionResult GecisKontrolKapiAcmaPersonelKaydet(GecisKontrolKapiAcmaPersonelKaydetModel model) { 
    try { 
        dynamic result = new JObject(); 
        bool login = false; 
        login = NewMethod(model, login); 
        ControllerGecisKontrolKapiAcmaPersonel controllerGecisKontrolKapiAcmaPersonel = new ControllerGecisKontrolKapiAcmaPersonel(); 
        controllerGecisKontrolKapiAcmaPersonel.KullaniciRowGuid = HttpContext.User.Identity.Name; 
        controllerGecisKontrolKapiAcmaPersonel.Model = controllerGecisKontrolKapiAcmaPersonel.ModelOlustur(ModelSecenek.ModelListe.GecisKontrolKapiAcmaPersonel); 
        GecisKontrolKapiAcmaPersonelModel gecisKontrolKapiAcmaPersonelModel = (GecisKontrolKapiAcmaPersonelModel)controllerGecisKontrolKapiAcmaPersonel.Model; 
        controllerGecisKontrolKapiAcmaPersonel.Model.ModelYukle(model.Id); 
        gecisKontrolKapiAcmaPersonelModel.GecisKontrolKapiTanimId = model.KapiId; 
        gecisKontrolKapiAcmaPersonelModel.TanimKullaniciId = model.KullaniciId; 
        gecisKontrolKapiAcmaPersonelModel.FonksiyonTusu = model.FonksiyonTusu; 
        gecisKontrolKapiAcmaPersonelModel.Login = login; 
        if (model.Id == 0) { 
            controllerGecisKontrolKapiAcmaPersonel.Ekle(); 
        } else { 
            controllerGecisKontrolKapiAcmaPersonel.Guncelle(); 
        } 
        return Ok(true); 
    } catch (Exception e) { 
        AnaModelHariciMetotlari.SistemHataKaydet(e.Message, HttpContext.Request.RouteValues["controller"].ToString() + "->" + HttpContext.Request.RouteValues["action"].ToString(), HttpContext.User.Identity.Name, "WEB", JsonConvert.SerializeObject(model)); 
        return BadRequest(new { id = 0, message = "Bir Hata Oluştu. Lütfen Tekrar Deneyiniz." }); 
    } 
}

排查思路与解决路径

1. 权限验证问题

异常明确提到DataVInsertMisAuthority=false,说明插入操作因权限被拦截:

  • 检查当前登录用户HttpContext.User.Identity.Name是否拥有AccessControlDoorOpenPersonnel表的插入权限
  • 核对后端DataVInsertMisAuthority相关的权限校验逻辑,确认配置是否正确

2. 请求参数与模型映射问题

  • 检查前端talep对象字段与后端GecisKontrolKapiAcmaPersonelKaydetModel的匹配性:比如前端传的KapiId对应后端模型的GecisKontrolKapiTanimId,是否存在字段名不匹配导致参数绑定失败
  • 校验前端parseInt转换逻辑:如果表单中id、kapiId等值为空或非数字,parseInt会返回NaN,引发模型绑定异常,需在前端添加参数有效性校验

3. 数据库操作逻辑问题

  • 插入新数据时(model.Id==0),代码执行了SELECT * FROM AccessControlDoorOpenPersonnel WITH(NOLOCK) WHERE Id=0,检查ModelYukle方法逻辑:传入Id=0时是否错误执行查询而非初始化空模型
  • 查看Ekle()方法内部实现,确认插入SQL语句是否正确,是否存在非空字段未赋值等约束问题导致插入失败

4. 错误日志排查

后端SistemHataKaydet已记录详细错误信息,查看日志文件中的完整异常堆栈,直接定位出错代码行

5. 请求调试

  • 使用Postman直接调用后端接口,传入模拟合法参数,验证接口本身是否能正常执行插入,排除前端参数传递问题
  • 检查请求头中Authorization令牌的有效性,确认用户是否有权限访问该接口

内容的提问来源于stack exchange,提问作者ebrua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:37:09