await Request.Content.ReadAsMultipartAsync(provider);

项目里面多处用到session,包括在其他类库中通过HttpContext获取Session对象,在await之后,直接访问Session均为空了。

怎么办,文件得上传啊。

网络搜索无果,后来发现HttpContext竟然支持Set方法,那么在await之前存储HttpContext的引用,在await之后将引用再赋给HttpContext,这样似乎就通了。

测试后通过,完美运行。

var context = System.Web.HttpContext.Current;
await Request.Content.ReadAsMultipartAsync(provider);
System.Web.HttpContext.Current = context;

转载于:https://www.cnblogs.com/blogzhang/p/8066084.html

原文链接: http://www.cnblogs.com/blogzhang/p/8066084.html 首先给出正确和错误做法,然后对比这两种做法。1正确的做法public class AvaterController : BaseApiController{[ Http Post] public async Task UploadAvater(int userId) { AvatarBLL pictureBLL = new AvatarBLL(this.Request); a wait pictureB...   将 ASP.NET 升级到 ASP.NET Core之后,相信大家都会遇到 Http Context .Current无法使用的 问题 。这也是我们迁移 ASP.NET Core必须解决的 问题 。   本文我们详细讨论一下,使用 Http Context 的正确姿势。   先列一下使用 Http Context 的具体场景:   1. 在Controller层 访问 Http Context 2. 在 间件 使用 Http Context 3. 在数据 访问 层使用 Http Context 4. 在后台线程 访问 Http C.. builder.RegisterType<Adapter>().As<IAdapter>().InstancePer Http Request(); 然后,我有一段 异步 代码,在其 解析Adapter组件。 以下代码已简化 Task< Http ResponseMessa... 在项目 使用 异步 ( async a wait )的时候发现一个现象, Http Context .Current为null,导致一系列的 问题 . 上网查了一些资料后找到了一个对象: System.Threading.Synchronization Context (提供在各种同步模型 传播同步上下文的基本功能。),跟踪代码后发现Synchronization Context .Current 返回... &lt;form id="form1" runat="server" method="post" action=" http ://localhost:2951/api/TechShare/PostFormData" enctype="mult ipa rt/form-data"&gt; &lt;div&gt; 对于迟到的答案我很抱歉,但是我们解决了这个 问题 (我忘了我没有在这里上传答案).基本上我们所做的就是在临时位置调用ReadAsMult iPa rt Async 方法,然后从请求 提取出其他参数.之后,我们验证了输入并将文件从临时移动到永久位置.如果你想看到代码,这对我们的例子是有效的,我相信它很简单,以适应任何工作 情况 :在客户端,我们有以下形式(是的,这个实现是为了演示目的,只支持发送一个文件…也是,输入... 在 ASP.NET Web api ,接收mult ipa rt/form-data文件,我们可以使用Mult ipa rtFormDataStreamProvider来保存图片 [ Http Post,Route("api/Job/newJob")] public async Task<I Http ActionResult> PostNewJob() 前端页面代码:上传$(document).ready(function () {$("#btnUpload").click(function () {var formdata = new FormData();var files = $(".file_control");$.each(files, function (index, domEle) {formdata.append("file" +... 前几天调查 ASP.NET WebApi 实现 mult ipa rt/form-data 文件上传功能时,遇到一个 问题 正好记录下来。mult ipa rt/form-data 经常用于多附件上传,其 数据是以 boundary 进行分割,形如:紧接着 boundary 的是该部分数据的描述。形如:咳咳,有点跑题了。因为要用 java 实现客户端上传,先看看 java 实现: if(Request.Content.IsMimeMult ipa rtContent()){                 var streamProvider =newMult ipa rtMemoryStreamProvider();   var task =Request.Content.ReadAsMult ipa rt Async (streamProvider).ContinueWith(t =&... webapi开发 ,经常会使用mult ipa rt/form-data方式来实现文件的上传。而网上流传甚广的就是下面这样一份代码。但是,这份代码有个 问题 ,就是初始化Mult ipa rtFormDataStreamProvider类或者子类时,需要制定文件的保存路径。但是,有些应用场景是无法指定这个路径的,比如由于安全 问题 不允许直接进行文件的写入。有时候,甚至没必要指定这个路径,因为只需要读取传递过来的文 public async Task<I Http ActionResult> FileUpload() if (!Request.Content.IsMimeMult ipa rtContent()) return StatusC... 对于迟到的答案我很抱歉,但是我们解决了这个 问题 (我忘了我没有在这里上传答案).基本上我们所做的就是在临时位置调用ReadAsMult iPa rt Async 方法,然后从请求 提取出其他参数.之后,我们验证了输入并将文件从临时移动到永久位置.如果你想看到代码,这对我们的例子是有效的,我相信它很简单,以适应任何工作 情况 :在客户端,我们有以下形式(是的,这个实现是为了演示目的,只支持发送一个文件…也是,输入... 在一个项目 ,为了系统执行效率更快,把一个经常用到的数据库表通过dataset放到Application ,发现在 异步 实现 每一次都会出现 Http Context .Current为null的异常,后来在网上查了好多资料,发现问这个 问题 的人多,回答的少,回答的也多数都是:引用System.Web,不要用 Http Context .Current.Application应该用System.Web. Http C