ajax 在 asp.net webforms 中返回 json 对象的身份验证失败
Posted
技术标签:
【中文标题】ajax 在 asp.net webforms 中返回 json 对象的身份验证失败【英文标题】:ajax is returning authentication failure for json object in asp.net webforms 【发布时间】:2019-02-10 15:52:06 【问题描述】:这是从查询中获取数据的 getData 函数 并通过数据阅读器将它们附加到字符串中,然后将字符串返回给ajax:
public static string GetData(string Word)
string response = "<p>No customer selected</p>";
string connect = "Data Source=SAFI-PC\\SQLEXPRESS;Initial Catalog=work1;Integrated Security=True";
string sql = "SELECT word_Id ,word ,meaning ,syn1 ,syn2,syn3 ,syn4 FROM trial WHERE word = N'"+Word+"'";
//" SELECT tbl_dic.WordID, tbl_dic.Word, tbl_dic.meaning, tbl_dic.syn1, tbl_dic.syn2, tbl_dic.syn3, tbl_dic.syn4, tbl_Trans.Definition, tbl_Trans.Translation FROM tbl_dic INNER JOIN tbl_Trans ON tbl_dic.WordID = tbl_Trans.WordID where Word=N'" + Word + "'";
StringBuilder sb = new StringBuilder();
using (SqlConnection conn = new SqlConnection(connect))
using (SqlCommand cmd = new SqlCommand(sql, conn))
cmd.Parameters.AddWithValue("Word", Word);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
while (rdr.Read())
sb.Append("<p>");
sb.Append("<strong>" + rdr["meaning"].ToString() + "</strong><br />");
sb.Append(rdr["syn1"].ToString() + "<br />");
sb.Append(rdr["syn2"].ToString() + "<br />");
sb.Append(rdr["syn3"].ToString() + "<br />");
sb.Append(rdr["syn4"].ToString() + "<br />");
sb.Append("</p>");
response = sb.ToString();
conn.Close();
return response;
return "<p style='background-color:black;'>sdadasdasda</p>";
现在是 ajax/jquery 代码:
$(document).ready(function ()
$("#askme").keyup(function ()
$("#ora").empty();
$.ajax(
type: "POST",
url: "solution1.aspx/GetData",
data: "'Word' : '" + $("#askme").val() + "'",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (res)
var json1 = JSON.stringify(res);
alert("sucess");
console.log(json1);
$("#ora").html(json1);
,
error: function (xhr, textStatus, err)
alert("readyState: " + xhr.readyState);
alert("responseText: " + xhr.responseText);
alert("status: " + xhr.status);
alert("text status: " + textStatus);
alert("error: " + err);
);
);
);
当成功和控制台记录 res 时,返回以下内容:
"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"
可能是视觉工作室坏了需要修理吗,因为我知道查询有效并且我已经尝试了 3 种不同的方法来完成任务并且每次我得到同一个对象 注意:我有另一个用 asp.net mvc 编写的项目,ajax 运行良好 请帮忙!!!!
【问题讨论】:
当您尝试访问solution1.aspx/GetData
时,我假设“身份验证失败”。我会确保你能做到这一点。
您正在从 Visual Studios 运行它并确认您可以使用您的 Windows 凭据访问数据库是否正确?这不是以其他用户身份运行,是您,您确实有访问权限?
no ajax 关于 solution1.apsx/getdata 是否成功,否则会报错。
是的,我可以访问数据库,其他 mvc 项目运行良好
我找到了解决方案这让我抓狂。内部 ~/App_Start/RouteConfig.cs 更改: settings.AutoRedirectMode = RedirectMode.Permanent;到:settings.AutoRedirectMode = RedirectMode.Off;
【参考方案1】:
试试这个
console.log(res.d);
尝试将res
附加为HTML
$("#ora").html($.parseHTML(res.d));
所有成功函数为
success: function (res)
var json1 = $.parseHTML(res.d);
alert("sucess");
console.log(res.d));//server method returns the string as You gave So dont stringify the res
$("#ora").html(json1);
,
【讨论】:
你好,非常感谢,但我找到了解决方案,我应该在网络配置中更改一些内容,我做到了,它奏效了。以上是关于ajax 在 asp.net webforms 中返回 json 对象的身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章
asp.net webforms ajax 更新gridview
ASP.NET WebForm Ajax请求Handler的经验