正常你应该要报异常的啊……
你需要把本机的stateserver开启,在控制面板--管理工具--服务里面找到state服务
你需要把本机的stateserver开启,在控制面板--管理工具--服务里面找到state服务
解决方案 »
- ASP.NET如何在后台程序向网站登录用户发送消息?
- 首页做静态化处理。 能教我一个比较简单的方法么,我这个人智商特别底下
- HttpContext.Current.Session与Page.Session的区别
- 恳请高手推荐一个VB.net做的ASP.net程序利用Ajax的例子
- 如何设置DataGrid的值
- js怎么给自定义控件中的子控件赋值
- ---------.NET的调试按扭在哪里?-----
- AJAX即时刷新,类似谷歌音乐
- web在调试环境成功,放到网站上就不行
- ASP.NET开发中的一个简单问题
- 【求助】Asp.Net错误处理(404或其它。。。)
- asp.net中的webform项目如何实现textbox动态显示数据
你贴出的代码,Session["VIP"],不可能受这个“限制”。相反地,这是不让Session信息丢失的一种做法。
你贴出的代码,Session["VIP"],不可能受这个“限制”。相反地,这是不让Session信息丢失的一种做法。
代码的话挺多的,我就怕贴出来,太长了,人都不想看了。
因为我另外的一个工程是能运行的,后来我吧上面这个WebConfig这个代码加上就不能用了。自定义控件前台js: function setValue(v,text) {
$('#pBar0236').progressbar({
value: v
});
$("#pText0242").text(text);
}
function Star() {
$("#pMain00123").show();
$.ajax({
type: "post",
url: "/UserControls/ProgressServer.ashx",
success: function(data) {
var d = data.split("♀");
if (d[0] == "-1") { //停止
$("#pMain00123").hide();
} else {
setValue(d[0], d[1]);
setTimeout(function() { Star(); }, 5);
}
},
error: function(e) {
$("#pMain00123").hide();
}
});
}自定义控件后台: public void SetValue(int value,string txt)
{
Session["McsBarValue"] = value;
Session["McsBarText"] = txt;
System.Threading.Thread.Sleep(10);
}
public void StarBar()
{
Session["McsBarValue"] = "0"; //这个是赋值成功的。
Session["McsBarText"] = "";
System.Threading.Thread.Sleep(10);
string key = "js"+DateTime.Now.ToString("yyyy-MM-dd");
ScriptManager.RegisterStartupScript(this, GetType(), key, "Star();", true);
} public void StopBar()
{
Session["McsBarValue"] = null;
Session["McsBarText"] = null;
}用于接收ajax的ashx文件 public void ProcessRequest(HttpContext context)
{
if (context.Session["McsBarValue"] == null)
{
context.Response.Write("-1♀-1");
}
else
{
context.Response.Write(context.Session["McsBarValue"] + "♀" + context.Session["McsBarText"]);
}
}上面其实是实现一个进度条,我前天发帖问了,但是没人说怎么弄,后来我翻了点资料自己弄了一个。
上面的问题是:
运行的时候,我把上面自定义控件放到一个页面webForm1.aspx,页面用线程开启,
如下: protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread th = new System.Threading.Thread(d);
pro.StarBar();//调式,发现这个时候 Session["McsBarValue"]赋值成了
th.Start();
}
private void d()
{ for (int i = 0; i < 100; i++)
{
pro.SetValue(i, "");//这个Session["McsBarValue"]也是赋值成了,但是在ashx里面的值都是“0”反正就是第一次赋值的值
System.Threading.Thread.Sleep(20);
}
pro.StopBar();
}调用StarBar的时候 Session["McsBarValue"] = “0”; 这个赋值是对的
然后调用SetValue以后,在赋值 Session["McsBarValue"] =“1” 我调试的时候,发现这个 Session["McsBarValue"] 也是等于1
但是在ashx文件里面是 Session["McsBarValue"]=“0” 他一直都是0
要是把上面的webconfig那个配置去了 又可以用了
就是 比如 第一次赋值
Session["vip"]="1";
这个时候值是有的,
一会你在赋值 Session["vip"]="2";
结果他的值还是1,就是第一次赋值的值,第二次赋值没有赋上
不能把Seesion全都清了,因为那个其他的登陆信息还是用Session保存的,要是全清了,那一会进度条完成了,又得重新登陆了
断点跟的。 在用户控件里面调式看到 Session["McsBarValue"]一直都在变,但是在ashx里面看到Session["McsBarValue"]就是第一次赋值的值。拜托你说点实际的东西可以吗,每次遇到你,准没好事。我不知道别人是怎么样,反正我每次问的,一遇到你,你除了说一堆没用的东西,就走了,你这种人真招气。
上回我问怎么弄得进度条,发了一贴,得,你回去扯了 你玩单机,拍拍屁股走人了。呵,你不说就不说呗,我自己去找资料,弄的差不多了,出问题了,我再问,妈的,你又来扯 什么单机。
我的确什么都不懂,我也可以去学,你可以说我什么都不懂,说我哪里哪里有问题。我都能接受。
但请你不要每次都故作高人似的扯一堆你自己发明的词语来糊弄别人(这个话是你自己说的),
不管你说我玩单机也罢,我接受,但你好歹解释一下哪里不足,我可以去补足。你连解释一下都不解释。如果每个人都像你一样说完就走了或者你先看那个什么什么再说吧,那你说发这个贴问问题还有什么意义,直接取看书或者玩单机算了。你倒是把别人说的爽了,别人还在水深火热中呢,真不明白你是怎么想的。
讲实际的看对谁讲
如果讲了能懂,也可以讲一讲而你现在明显是完全不懂网站和单机到底有什么区别,
不知道网页的生命周期
不知道网站是天生多线程,天生是客户端和服务端通信的
仅仅做过单机VS调试,完全没有部署到IIS上过
不知道IE跟网站互相发送数据到底是怎么个过程提示你一下只是让你先稍微了解一些,可没有耐心从头到尾一步一步的给你细说,细说够出本书了
断点跟的。 在用户控件里面调式看到 Session["McsBarValue"]一直都在变,但是在ashx里面看到Session["McsBarValue"]就是第一次赋值的值。拜托你说点实际的东西可以吗,每次遇到你,准没好事。我不知道别人是怎么样,反正我每次问的,一遇到你,你除了说一堆没用的东西,就走了,你这种人真招气。
上回我问怎么弄得进度条,发了一贴,得,你回去扯了 你玩单机,拍拍屁股走人了。呵,你不说就不说呗,我自己去找资料,弄的差不多了,出问题了,我再问,妈的,你又来扯 什么单机。
我的确什么都不懂,我也可以去学,你可以说我什么都不懂,说我哪里哪里有问题。我都能接受。
但请你不要每次都故作高人似的扯一堆你自己发明的词语来糊弄别人(这个话是你自己说的),
不管你说我玩单机也罢,我接受,但你好歹解释一下哪里不足,我可以去补足。你连解释一下都不解释。如果每个人都像你一样说完就走了或者你先看那个什么什么再说吧,那你说发这个贴问问题还有什么意义,直接取看书或者玩单机算了。你倒是把别人说的爽了,别人还在水深火热中呢,真不明白你是怎么想的。
+1
我也那么觉得。。
卧槽,我以前也是这样,问个问题不是蹭分的,就是大神理论,给他们这么一搞,问题没解决,帖子删除不了,可用分也拿不回来。想结贴,没有满意答案,不结贴别人一看,就说结帖率低....搞来搞去可用分都被搞光了,后来我干脆都不来这里问了,直接百度。
其实问问题,本身就是先要解决问题才去交流...
就比如1+1等于多少,你直接回答2就行了,要是心情好,你就告诉他为什么是2,要是心情不好,先说答案然后在骂这么简单的问题都问。要是觉得太简单玷污自己就干脆都不回..
个人觉得,说理论固然好,但是那远水解不了近渴,说不定你说一下就能解决问题的,非要绕几圈。问题没解决怎么交流
不能把Seesion全都清了,因为那个其他的登陆信息还是用Session保存的,要是全清了,那一会进度条完成了,又得重新登陆了 既然有可能是web.config的问题 那就看看stateConnectionString中的端口对不对 看看 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters/Port是不是42424 把stateNetworkTimeout设置长些 单位是秒
好吧,先谢了。我这个其实是 做一个从excel读取一大堆数据的操作,这个是一个单独的模块,我正式用的时候,是把进度条放在这个模块里面设置的。上面说的SessionID是一致的。现在我知道问题所在了,在Session默认的情况下 (inPro),是允许 在同一进程内,还可以通过对象引用访问。
但是mode设置为StateServer后,数据存到了其它进程中,你的线程得到的只是一个代理对象、是复本。不再有引用类型的特征。
所以我的线程d 操作的Session[]相当于一个 值类型的 东西,
所以就有了 我在默认InProc 下程序跑的正常,设置StateServer就用不了的情况我现在把Session改成了Application,然后用SessionID作为Application的key值,能用是能用了,就是不知道会引发什么其他问题,我读书的时候老师说最好不要用Application.
先暂时用着。