Asp.net Ajax删除记录无法在Production Server

时间:2017-11-21 10:04:24

标签: jquery asp.net ajax

我使用此Ajax代码删除记录。该代码在localhost中正常工作,而它不断要求托管服务器上的凭据。

enter image description here

并在Windows上

enter image description here

根据所有参与者的建议,我现在主要怀疑两件事。

1)尽管付出了一些努力(需要联系服务器级别的支持),但网络托管是一个便宜的镜头并且没有为应用程序权限进行更新

2)消息框可能需要一些令牌进行身份验证,例如this

$(document).ready(function () {
   $('.js-delete').on('click', function () {
        var button = $(this);
        var buttonId = button.attr("data-id");
        //var container = $(this).parent().siblings('#tablex').find('#hiddenTable').clone();

        var box = bootbox.dialog({
        show: false,
        message: "Are you sure you want to delete the Record?",
        title: "Delete Record?",

    buttons: {

        cancel: {
            label: "Cancel",
            className: "btn-default"
        },
      ok: {
        label: "Delete",
        className: "confirm btn btn-danger",
        callback: function (result) {
            if (result) {
                $.ajax({
                    url: "/api/datax/delete/" + button.attr("data-id"),
                    method: "Delete",
                    success: function () {
                        button.parents("tr").remove();
                    }
                });
            }
            console.log('Button Pressed.');
        }
      }
     }
    });
   });
});

在我的控制器中,我正在处理这样的删除调用。

 [Route("api/datax/delete/{id}")]
    public void Delete(int id)
    {
        var dataInDb = _context.Datax.SingleOrDefault(c => c.Id == id);

        if (dataInDb == null)
        {
            throw new HttpResponseException(HttpStatusCode.NotFound);
        }

        _context.Datax.Remove(dataInDb);
        _context.SaveChanges();

    }

3 个答案:

答案 0 :(得分:5)

如果插入和更新在生产服务器上正常工作,那么Web.config中就不会出现连接字符串问题。

  • 尝试手动删除数据库日志记录中的记录,作为在使用生产服务器时在Web.Config中使用其凭据的用户,并检查它允许或不允许的天气。如果它不允许那么你需要在SQL服务器中给予删除和读/写权限。

答案 1 :(得分:1)

1)请检查Webserver上是否允许使用HTTP-Delete-Method

2)前端的域部分是否与Web服务不同?如果是,请检查浏览器控制台输出是否有关于CORS的错误,这意味着浏览器认为您正在进行一些跨站点脚本编写

3)在Internet Explorer中,我们遇到了Kerboros-Authentication的问题。浏览器没有提供身份验证令牌。不确定该截图是否为IE,但如果是,请检查切换以下设置是否会改变行为:

额外=>互联网选项=>高级=>安全性:“激活集成Windows身份验证”和“启用高级保护模式” (或类似的东西,我已经翻译了德语的名字)

答案 2 :(得分:1)

您是否尝试在ajax beforeSend中添加基本身份验证以进行弹出式身份验证?

beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password)); }