我使用此Ajax代码删除记录。该代码在localhost中正常工作,而它不断要求托管服务器上的凭据。
并在Windows上
根据所有参与者的建议,我现在主要怀疑两件事。
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();
}
答案 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));
}