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 WebForm 之 Ajax 请求后端处理

asp.net ajax 如何应用到 webform 中

asp.net webforms ajax 更新gridview

ASP.NET WebForm Ajax请求Handler的经验

无法让 select2.js ajax 与 asp.net webform 一起使用

在 ASP.NET Webforms 中启用跨域请求