有什么区别Server.MapPath()和HostingEnvironment.MapPath()?是否Server.MapPath()有任何优势了HostingEnvironment.MapPath()?
我原来的问题是当服务器上的文件路径HttpContext不存在时映射,我无法将Server变量传递Global.asax给我的方法.
我用HostingEnvironment.MapPath()它代替,因为它不需要HttpContext.有这两种方法会产生不同结果的情况吗?
按照ASP.NET上的教程,实现了一个Web API控制器方法,用于执行如下所示的异步文件上载:
public Task<HttpResponseMessage> PostFormData()
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
// Read the form data and return an async task.
var task = Request.Content.ReadAsMultipartAsync(provider).
ContinueWith<HttpResponseMessage>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
}
return Request.CreateResponse(HttpStatusCode.OK);
});
return task;
}
Run Code Online (Sandbox Code Playgroud)
通过标准的多部分HTML表单上传文件非常有效.但是,当另一个开发人员尝试通过Flex的FileReference类构造的多部分表单上载文件时,会抛出错误:
MIME多部分流的意外结束.MIME多部分消息未完成.
我不知道问题出在Web API或Flex上.我找到了一些没有任何影响的相关修复程序(使用ASP.Net Web API的多部分表单POST),最近发现了这一个("多部分流.MIME多部分消息未完成"webapi上传错误).如果第二个链接成立,是否有人知道它是否在通过Nuget提供的当前版本的Web API中出现?讨论是在5月份,Nuget的最新版本是8月,所以我认为这个修补程序已经部署,并不是我的问题的根本原因.