我有一个用于上传用C#编写的文件的Web服务.前端应用程序是用Javascript/HTML5编写的(使用https://github.com/blueimp/jQuery-File-Upload)
最近,我正在审查服务器日志,并发现了一些由客户端浏览器发送的PDF文件的奇怪MIME类型,例如:
application/unknown
application/force-download
application/force-download/n
application/force-download\n
[application/pdf]
Run Code Online (Sandbox Code Playgroud)
其中一些导致.NET框架抛出异常:
MultipartMemoryStreamProvider streamProvider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(streamProvider);
"Message Error parsing MIME multipart body part header byte 156 of data segment System.Byte[]."
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办.
我有以下代码:
HttpContext httpContext = HttpContext.Current;
RequestContext currentContext = RequestContextManager.CurrentContext;
ILifetimeScope currentSessionScope = PlatformContext.LifeTimeScope;
ConcurrentQueue<Exception> exceptions = new ConcurrentQueue<Exception>();
ConcurrentBag<ParallelCalculateObj> forEachResult = new ConcurrentBag<ParallelCalculateObj>();
ConcurrentBag<ParallelCalculateObj> testForEachPassResult = new ConcurrentBag<ParallelCalculateObj>();
ParallelLoopResult loopResult = Parallel.ForEach(applications, () =>
{
HttpContext.Current = httpContext;
RequestContextManager.SetCustomCurrentContext(currentContext);
PlatformContext.LifeTimeScope = currentSessionScope;
return new ParallelCalculateObj();
}, (application, pls, localObj) =>
{
try
{
// some code
}
catch (Exception e)
{
exceptions.Enqueue(e);
}
testForEachPassResult.Add(localObj);
return localObj;
}, forEachResult.Add);
Run Code Online (Sandbox Code Playgroud)
哪里applications.Count = 3
.上面的代码执行后,我得到了forEachResult.Count = 2
和testForEachPassResult.Count = 3 …