我有一个页面执行一个很长的过程,从几个csv文件解析超过600万行到我的数据库。
问题就像当用户点击“GO”开始处理并解析600万行时,我想设置一个会话变量,该变量可立即用于我的网站应用程序的其余部分,以便该网站的任何用户知道具有唯一ID号的用户已经开始解析文件而不必等到处理了600万行的末尾?
同样使用jQuery和JSON,我想在网页上获得有关正在处理哪个csv文件以及处理了多少行的反馈。
可能有其他人同时解析文件,即使网站上没有登录或用户身份验证,我怎么能跟踪所有这些并停止与其他用户混淆等等?
我正在使用.NET 4.0 Entity Framework 4.0,jQuery和MS SQL 2008 R2开发C#。
我正在考虑使用会话变量然而在我的静态[WebMethod]中我的jQuery JSON调用我无法撤回我的会话,除非我使用HttpContext.Current.Session但我不知道如果这个解决方案会工作吗?
任何指导或想法都会受到赞赏。
由于
答案 0 :(得分:0)
首先:任何地方的任何用户都不应该看到会话变量。 当某个客户端连接到服务器时,服务器会为它们进行会话,下次同一个用户请求时(在会话的到期时间内),会话(及其变量)可用。
如果您愿意,可以使用静态类。
例如
public static class MyApplicationStateBag
{
public static Dictionary<string,object> Objects {get; private set;}
}
并提供进度报告。你可以使用asp:Timer来检查每两秒钟的进度百分比。
这是我为asp编写的示例代码:UpdatePanel中的Timer: Writing a code trigger for the updatepanel.
我建议您使用Guid将当前进度识别为状态包的关键。
答案 1 :(得分:0)
这样做的正确方法是通过服务,例如WCF服务。您不希望在Web服务器上施加巨大的负载,这不应该这样做。
通常情况:
P.S。这不是你问题的直接答案,但我希望它有所帮助