asp.net将在大约15分钟内发送响应
我希望当客户端发送到我的网页请求时,我的网页得到请求和活动计时器,并等待大约15分钟,然后检查客户端,以便连接并响应json字符串。 我的服务器代码是:asp.net将在大约15分钟内发送响应,asp.net,Asp.net,我希望当客户端发送到我的网页请求时,我的网页得到请求和活动计时器,并等待大约15分钟,然后检查客户端,以便连接并响应json字符串。 我的服务器代码是: string name, count; protected void Page_Load(object sender, EventArgs e) { name = Request.QueryString["name"]; count = Request.QueryString["count"];
string name, count;
protected void Page_Load(object sender, EventArgs e)
{
name = Request.QueryString["name"];
count = Request.QueryString["count"];
Timer1.Interval = 15000;
Timer1.Enabled = true;
}
protected void Timer1_Tick(object sender, EventArgs e)
{
if (Response.IsClientConnected)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
string json=jss.Serialize("در خواست شما تایید شد");
Response.Clear();
Response.Write(json);
Response.End();
}
else
{
Response.End();
}
}
我怎样才能做到这一点?仅通过服务器端编译的C代码无法实现您想要实现的目标 问题是,您希望客户端每十五分钟发送一次请求,以获取最新的JSON,但您正试图告诉服务器这样做 有很多更好的方法来完成你想要做的事情,比如说,比15分钟计时器更好,但这里有一种方法可以通过JavaScript实现: 首先,公开服务器的API调用—获取JSON的调用 然后,在客户端的脚本节点中,即在您发送的HTML中的脚本标记中,定义以下函数:
function refreshDataAndUpdatePage() {
$.ajax({
url: 'your/url/to/the/action',
success: function (data) {
// use data JSON to update page.
// then, call this function again recursively after a timeout of 15 minutes = 900 s = 900,000 ms
setTimeout(refreshDataAndUpdatePage, 900000);
}
}
当然,也可以打电话给某个地方。根据您的评论:谢谢,例如,我希望客户向我的服务器发送订单,当系统经理接受订单时,回复客户:您的订单已接受 您需要包含jQuery来完成这一点 由于查询字符串中有名称和计数,我认为这将帮助您识别客户或将其更改为订单ID,因此您可以在javascript块中的.aspx页面上使用以下内容:
$(document).ready(function(){
setTimeout(function()
{
location.reload();
}, (15 * 60 * 1000)); // (that's 15 mins that I couldn't be bothered to work out...)
});
您的服务器端代码可能是:
protected void Page_Load(object sender, EventArgs e)
{
var name = Request.QueryString["name"];
var count = Request.QueryString["count"];
if(OrderAccepted(name, count))
{
// display message to user
}
}
private bool OrderAccepted(string name, string count)
{
// do what you need to do to find out if the order is accepted.
}
如果订单不被接受,您可能还想尝试只运行javascript,这样它就不会继续运行。但15分钟的间隔是相当长的时间,大多数人在知道订单被接受后会关闭浏览器
希望这有帮助。长时间超时(如15分钟)不是一个好主意,因为服务器和访问者之间的路由器可能会关闭底层TCP连接。我建议最多1分钟,并确保您的客户定期重新轮询服务器,以防服务器关闭。@谢谢,例如,我希望客户向我的服务器发送订单,当系统经理接受订单时,回复客户:您的订单已接受。您必须使用javascript在客户端呼叫服务器以检查电子邮件。此代码将不起作用!当您试图调用响应时,响应不存在。@Aristos谢谢,我该怎么做?此外,应用程序池将被IIS回收,这意味着在发生这种情况时,内存状态(如计时器)将丢失。