gpt4 book ai didi

c# - 从 jquery ajax 调用 webmethod 和静态对象的问题

转载 作者:行者123 更新时间:2023-11-30 12:13:21 24 4
gpt4 key购买 nike

我有一个通过 jquery ajax 调用它的 web 方法。在 web 方法中我将转发器数据源绑定(bind)到 pagedatasourse 对象但是当我运行我的程序时如果我不在方法名称之前使用静态关键字 webmethod jquery ajax 方法不能正常工作如果使用静态关键字我有这个错误

Object reference not set to an instance of an object....System.NullReferenceException: Object reference not set to an instance of an object.

和 pagedatasourse 异常。我很困惑。解决方案是什么?非常感谢 它是我的 jquery 函数

 $(function () {
var x = 0;
$('.c1').bind('click', function () {

counter = counter + 1;
$.ajax(
{
type: "POST",
url: "WebForm1.aspx/bringdata",
data: { counter: counter },
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success: function (ret) {

alert("success");
},
error: function (x, e) {
alert("error ");
}
}
);

})
$('.c2').bind('click', function () {

x = x - 1;

})

})

及其背后的代码:

  [WebMethod]
public static void bringdata(int counter){
SqlConnection con = new SqlConnection("data source=.;database=site;integrated security=true;");
int cnt;
string sSQL = "Select username ,average,weight,point,password ,kal, Rank() over(order by point desc) as 'ranking' from karbar order by point desc";
SqlCommand cmd = new SqlCommand(sSQL, con);

SqlDataAdapter adapt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapt.Fill(ds);
cnt=ds.Tables[0].Rows.Count;
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging=true;
pds.DataSource=ds.Tables[0].DefaultView;
pds.PageSize=5;
pds.CurrentPageIndex=counter;
int vcnt=cnt/pds.PageSize;
rptList.DataSource = pds;
rptList.DataBind();

最佳答案

为什么会出现异常?

我的猜测是,因为 APS.NET 在每次请求后处理数据集(此处未显示),而您正尝试对前一个请求的结果进行分页。如果您创建一个数据集 static(这在 ASP.NET 中是一个很大的禁忌),那么它会保存在内存中并在所有请求之间共享。

如何解决这个问题?

您使用的数据访问模式不正确。数据集真的很糟糕,实际上不应该与 ASP.NET 一起使用。

  • 完全摆脱数据集。不要使用静态对象,当您的应用程序获得一些流量时,您会看到真正奇怪的错误。
  • 使用更轻量级的东西,比如 List<Record>并用 DataReader 填充它.
  • 使用数据库 分页,而不是内存 分页。永远不要要求数据库服务器带来所有数据,否则您的应用程序会崩溃(当您获得一些流量并且数据库变大时)。
  • 考虑使用 ORM(如 NHibernate 或 EF),它会为您带来很多神奇的效果。

关于c# - 从 jquery ajax 调用 webmethod 和静态对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11792903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com