单元测试 – 测试ASP.NET Web API多部分表单数据文件上载
发布时间:2020-12-16 04:19:54 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用N-UNIT来测试我的Web API应用程序,但我无法找到一种正确的方法来测试我的文件上传方法.哪种方法是测试方法的最佳方法? Web API控制器: [AcceptVerbs("post")]public async TaskHttpResponseMessage Validate() { // Check if the request co
我正在尝试使用N-UNIT来测试我的Web API应用程序,但我无法找到一种正确的方法来测试我的文件上传方法.哪种方法是测试方法的最佳方法?
Web API控制器: [AcceptVerbs("post")] public async Task<HttpResponseMessage> Validate() { // Check if the request contains multipart/form-data. if (!Request.Content.IsMimeMultipartContent()) { return Request.CreateErrorResponse(HttpStatusCode.UnsupportedMediaType,"please submit a valid request"); } var provider = new MultipartMemoryStreamProvider(); // this loads the file into memory for later on processing try { await Request.Content.ReadAsMultipartAsync(provider); var resp = new HttpResponseMessage(HttpStatusCode.OK); foreach (var item in provider.Contents) { if (item.Headers.ContentDisposition.FileName != null) { Stream stream = item.ReadAsStreamAsync().Result; // do some stuff and return response resp.Content = new StringContent(result,Encoding.UTF8,"application/xml"); //text/plain "application/xml" return resp; } } return resp; } catch (System.Exception e) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError,e); } } 解决方法
根据您的上述评论,以下是一个示例:
HttpClient client = new HttpClient(); MultipartFormDataContent formDataContent = new MultipartFormDataContent(); formDataContent.Add(new StringContent("Hello World!"),name: "greeting"); StreamContent file1 = new StreamContent(File.OpenRead(@"C:ImagesImage1.jpeg")); file1.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); file1.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); file1.Headers.ContentDisposition.FileName = "Image1.jpeg"; formDataContent.Add(file1); StreamContent file2 = new StreamContent(File.OpenRead(@"C:ImagesImage2.jpeg")); file2.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); file2.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); file2.Headers.ContentDisposition.FileName = "Image1.jpeg"; formDataContent.Add(file2); HttpResponseMessage response = client.PostAsync("http://loclhost:9095/api/fileuploads",formDataContent).Result; 通过电线的请求将是: POST http://localhost:9095/api/fileuploads HTTP/1.1 Content-Type: multipart/form-data; boundary="34d56c28-919b-42ab-8462-076b400bd03f" Host: localhost:9095 Content-Length: 486 Expect: 100-continue Connection: Keep-Alive --34d56c28-919b-42ab-8462-076b400bd03f Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=greeting Hello World! --34d56c28-919b-42ab-8462-076b400bd03f Content-Type: image/jpeg Content-Disposition: form-data; filename=Image1.jpeg ----Your Image here------- --34d56c28-919b-42ab-8462-076b400bd03f Content-Type: image/jpeg Content-Disposition: form-data; filename=Image2.jpeg ----Your Image here------- --34d56c28-919b-42ab-8462-076b400bd03f-- (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – ASP.NET MVC注入Http / Request / Contro
- asp.net-mvc – 将ASP.NET MVC应用程序与Entity Framework分
- asp.net – 麻烦最小化304请求
- asp.net-mvc – ASP.NET MVC以编程方式获取控制器列表
- asp.net – asp:ContentPlaceHolder和代码块问题
- 每个请求的ASP.NET 5(VNext)Autofac实例
- asp.net – 在App_Start中初始化和播种Identity的DbContext
- asp.net-mvc – MVC / Razor – 当有下列括号时,Intellisen
- asp.net – Page_Init vs OnInit
- asp.net – 奇怪的Ajax ComboBox下拉列表
推荐文章
站长推荐
- asp.net-mvc – 将SignalR与Azure表存储一起使用
- asp.net – 编码撇号
- Asp.net动态验证器无法在Chrome或Safari中使用
- asp.net – AspNetCompatibilityRequirements是什
- asp.net-mvc-3 – 如何为MVC3生成服务和存储库层
- asp.net-mvc – ASP.NET MVC 4 Datagrid
- asp.net-mvc – 在ASP.NET MVC站点上集成PayPal的
- asp.net-web-api – Asp.Net核心WebAPI CORS无效
- asp.net-mvc-3 – ASP.NET MVC如何使用pingfeder
- asp.net-mvc-4 – 错误:在VS2012中将MVC4升级到
热点阅读