C# .NET多部分数据出现在序言部分
客户端使用MultipartFormDataContent和两部分数据,一部分是文件,另一部分是一些元数据。 在每3个请求中,将有2个请求因FileData为空而失败 客户:C# .NET多部分数据出现在序言部分,c#,.net,multipartform-data,dotnet-httpclient,C#,.net,Multipartform Data,Dotnet Httpclient,客户端使用MultipartFormDataContent和两部分数据,一部分是文件,另一部分是一些元数据。 在每3个请求中,将有2个请求因FileData为空而失败 客户: var client = new HttpClient(new WebRequestHandler()); using (var content = new MultipartFormDataContent()) { var guid = Guid.NewGuid().ToString(); var tmp
var client = new HttpClient(new WebRequestHandler());
using (var content = new MultipartFormDataContent())
{
var guid = Guid.NewGuid().ToString();
var tmpFileName = string.Format("{0}{1}", guid, Path.GetExtension(fileName));
var dataContent = new ByteArrayContent(data);
content.Add(dataContent, guid, tmpFileName);
var optionContent = new ByteArrayContent(optionData);
optionContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("parameter") { Name = "optionsStr" };
content.Add(optionContent);
var response = client.PostAsync("http://test.com", content).Result;
}
服务器:
[HttpPost]
public async Task<HttpResponseMessage> UploadDocument(string dataStr)
{
string rootPath = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Documents");
MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(rootPath);
await Request.Content.ReadAsMultipartAsync(provider);
if (provider.FileData == null || provider.FileData.Count == 0)
throw new Exception("There is no file in the current request of httpcontext.");
}
[HttpPost]
公共异步任务上载文档(字符串dataStr)
{
字符串rootPath=System.Web.HttpContext.Current.Server.MapPath(“~/App_Data/Documents”);
MultipartFormDataStreamProvider提供程序=新的MultipartFormDataStreamProvider(根路径);
wait Request.Content.ReadAsMultipartAsync(提供程序);
if(provider.FileData==null | | provider.FileData.Count==0)
抛出新异常(“httpcontext的当前请求中没有文件。”);
}
在使用Wiresharks进行嗅探后,发现实际文件数据在多部分结构的序言部分被错误放置:
错误请求:
正确的请求:
有什么线索可能导致这种行为吗