请问在.cs后台文件中访问ashx怎么处理?
string PageUrl = "http://xxxxxx.com/xxxxxxxx.ashx";//URL
WebClient myWebClient = new WebClient();
byte[] myDataBuffer = myWebClient.DownloadData(PageUrl);
string result = Encoding.UTF8.GetString(myDataBuffer);
不知道你是不是找这个
这个还真没这么玩过, 不过我个人鄙见, 是不是需要一个中间层(前台js)来完成交互呢?
就是想定时访问一下,保证seesion不过期。你有其它方法吗
@moyanger: 定时访问? 那意思就是说, 其实.cs后台文件中访问ashx的的目的就只是保证seesion不过期而已吗? 那么这个seesion保存的是什么呢?
@请叫我头头哥: 就是访问一下,保证session不过期就行了。session就是用户的信息
@moyanger: 那这个步骤不能在.cs里完成吗? 因为这样访问ashx还增加了服务器的压力。 如果只是单纯的保证session不过期, 你可以在生命session的时候,确定下他的生命周期, 或者直接在web.config配置。
@请叫我头头哥: 生命周期是只要用户不点退出,session 就不过期
@moyanger: 这个周期必须设定一个时间范围吧,我需要的效果是不限时
@moyanger: 恕我愚钝, 那这样我暂时就想不到其他好办法了。
又见到你了,头头哥
@菜鸟要谦虚: 承认了 - -
换种Session存储方式就行了,或者直接将授权信息存到客户端cookie中。
就为了session不过期而去访问ashx, 太奇葩了,
你是有计时器在cs后台代码中吗?
你能保证aspx.cs中的计时器在运行吗?
如果你非要这么干, 可以试试后台输出类似:
Page.ClientScript.RegisterStartupScript(page.GetType(), "r",<script src='/你的ashx文件.ashx?tn=math.random()&可继续接你的参数=XXX'></script>);
原理自己体会, 还可以使用setTimeout之类的定时。
领导这么要求
1,在前台放js计时器,定期ajax访问后台。
2,或者考虑不适用Session,将认证信息存储在cookie中。
3,或者用缓存。登陆后,将用户名存储在cookie中,做好加密,将登陆信息存在缓存中,设置缓存项用不过期。
4,从后台访问ashx,参考三楼,注意SessionID和应用程序池的回收。