asp.net – 跨线程使用HTTPContext
用户点击页面spawn.aspx,然后生成六打线程,渲染页面全部使用
((System.Web.IHttpHandler)instance).ProcessRequest(reference to spawn's HTTPContext); 不要担心ASP.Net似乎是发送用户7个响应1请求,该部分被处理,只有一个响应被发送. 问题在于,在高流量环境(我们的生产环境)中有许多线程(四分之一)),我们会发现错误:
我们不能在其他地方复制.我的同事认为这是因为我正在重用原始的HTTPContext并将其传递给其他线程,而且它不是线程安全的. 按照这个逻辑,我已经尝试使一个新的HTTPContext进入线程.但它的一部分似乎不会“结合”.具体来说,我需要将Session对象转换成新的HTTPContext.我想我想要得到其他部分,像缓存.对于记录HTTPContext.Current.Session.IsSynchronized为false. 我的问题是: >你认为这个错误是从跨线程使用HTTPContext吗? 编辑:更多细节 所以回到这个声明:“不要担心ASP.Net似乎是发送用户7个响应1请求,只有一个响应被发送.”雷蒙德陈的巨大粉丝,我同意你的看法:“现在你有两个问题”是没有任何更多信息的合理的声明. 实际发生的是我正在构建一个要发回的Excel文档.在spawn.aspx页面中,它设置了一些状态信息,包括将其渲染为excel的事实,以及要执行渲染的对象.每个生成的页面都会获取该信息,并且将阻止它们轮到渲染到该对象.如果字面上看起来像这样: protected override void Render(System.Web.UI.HtmlTextWriter writer) { if (this.RenderToExcel) { Deadlocker.SpinUntilCurrent(DeadLockToken); RenderReport(this,this.XLSWriter); Deadlocker.Remove(DeadLockToken); } else base.Render(writer); } 但是到目前为止所有的处理 – 数据库访问,控制权力,所有这些都是并行完成的.而且还有很多 – 足够让它变得模棱两可,而仍然让它阻挡在渲染上会将整个时间缩短一半以上. 而最好的部分是 – 没有什么必须重写为Excel渲染.所有控件都知道如何使自己成为excel,而且您可以独立访问每个生成的页面(实际上是“正常情况”) – excel报告只是所有生成页面的聚合.) 所以我认为最终的结果将是“你不能这样做,你需要重新思考这种方法” – 但是我至少要尝试一下,因为事实上一切都很好,没有重复任何逻辑或任何代码或必须抽象任何东西才是完美的.它只是多线程的问题,如果我连续渲染页面一切都很好,只是缓慢. 解决方法
虽然HttpContext旨在处理不是特定于线程的上下文(因为http上下文可以在一个线程上启动并在另一个线程上完成),但它不是隐式线程安全的.
本质上问题在于你正在做一些不想要的事情,这些请求一般是多个,每个都有自己分配的HttpApplication来满足请求,每个都有自己的HttpContext. 我真的会尝试让asp.net基础架构委托请求本身. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC中部分VIEW和用户控件的区别
- asp.net – MySQL ::连接器/净欧元符号
- asp.net-mvc-3 – WebGrid列中的MVC3 Html.BeginForm?
- asp.net – UpdatePanel回发后调用Javascript函数问题
- ASP.NET和C#重定向
- .net – IAuthenticationRequest.RedirectToProvider不应该
- asp.net-mvc – ASP.NET MVC ValidateInput(false)停止使用
- 这是一个错误吗?或者它是ASP.NET 4(或MVC 2)中的设置?
- ASP.NET / IIS7 Url重写映射不起作用
- asp.net – MapRoute和MapPageRoute有什么区别?
- asp.net – web.config allowDefinition = Machi
- asp.net中的Html.ActionLink MVC对象值格式错误
- ASP.NET Core和JQuery不显眼的AJAX无法正常工作
- ASP.NET成员资格:存储当前用户ID的位置?
- asp.net – SQL Server用户定义的表类型和.NET
- asp.net-mvc – ASP.NET MVC:对动作执行AJAX请求
- asp.net – 使用SqlMetal和Visual Studio时自动生
- asp.net-mvc – 如何解决异常“文件不存在”?
- asp.net – 是否可以在多个Web服务器之间共享Sys
- asp.net-mvc-3 – 从单控制器操作返回多个部分视