asp.net-mvc – 为什么HttpContext.Current在asp.net mvc中的用户定义类中始终为n
我创建了一个名为MyLongRunningClass的类,它包含一个方法: public string ProcessLongRunningAction(IEnumerable<HttpPostedFileBase> files,string id) { int currentIndex = 0; foreach (HttpPostedFileBase file in files) { currentIndex++; lock(syncRoot) { string path=HttpContext.Current.Server.MapPath("~//Content//images //"+file.FileName);//Excecption is created here........ file.SaveAs(path); } Thread.Sleep(300); } return id; } 从控制器调用此方法,使用文件列表保存在images目录中.每当执行HttpContext.Current.Server.MapPath(“// Content // images //”file.FileName)时,抛出NullReferenceException,并且HttpContext.Current始终为null.当我使用session时会发生同样的事情.我不知道代码有什么问题. 解决方法看起来您在一个单独的线程上运行ProcessLongRunningAction.但是,当您未在原始请求线程中运行时,HttpContext.Current将返回null.这是explained here. 如果在创建的每个线程上手动设置上下文,则可以使用它.这在SO中的类似问题上进行了讨论,如here和here. 但是,考虑到你的问题中的代码,如果你只是为该方法中的路径添加一个参数会更好,正如Johann Blais建议的那样.然后,您将解析原始请求线程中的路径并将其传递给该方法,然后该方法可以在分离的线程上运行.这样你的方法就不依赖于HttpContext.Current. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – asp.net mvc如何正确测试控制器
- ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别?
- asp.net – 在Web.config帮助中定义tagPrefixes
- asp.net – HttpWebRequest正在为404抛出异常
- asp.net-mvc-4 – MVC4 RC脚本捆绑很慢
- asp.net-mvc-3 – mvc3在另一个内部嵌入了局部视图
- asp.net-mvc-4 – ASP.NET MVC 4通过ActionLink传递对象变量
- asp.net-mvc – ASP.Net [HiddenInput]数据属性在Razor中用
- asp.net – IIS Express(WebMatrix)打开外部连接
- asp.net – 如何在MVC 3中设置图表系列颜色?
- asp.net-mvc – asp.net MVC应该是View-Model封装
- asp.net – 适用于多个用户的EWS通知中心
- asp.net-mvc – Mvc 3 Razor:使用部分部分视图?
- [asp.net mvc 奇淫巧技] 02 - 巧用Razor引擎在Ac
- asp.net-mvc – 如何正确识别vs2008版本级别?
- ASP.NET身份和移动客户端
- ASP.NET MVC AJAX文档在哪里?
- ASP.NET Webdeploy失败;项目中不存在AddSchedule
- asp.net-mvc – 如何将行的模型从Kendo Grid传递
- MVC SessionStateAttribute不作为全局属性