我刚刚从 WebApi beta 升级到 NuGet 的最新 WebApi 包。我正在使用的Visual Studio项目面向.NET 4.0而不是4.5。
我已经能够解决除一个问题之外的所有问题。我正在通过以下代码使用多部分表单上传文件:
// Verify that this is an HTML Form file upload request
if (!Request.Content.IsMimeMultipartContent("form-data"))
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var task = Request.Content.ReadAsMultipartAsync();
var dateField = task.Result.FirstDispositionNameOrDefault("expireby");
if (dateField == null)
{
return this.SendResponse(HttpStatusCode.BadRequest, ":dateNotFound:");
}
var dateFieldValue = dateField.ReadAsStringAsync().Result;
if (!DateTime.TryParse(dateFieldValue, out expireBy))
{
return this.SendResponse(HttpStatusCode.BadRequest, ":invalidDateFormat:");
}
方法FirstDispositionName或Default不再编译,我收到以下错误:
"System.Net.Http.MultipartMemoryStreamProvider"不包含 定义"第一个处置名称或默认值",并且没有扩展方法 "FirstDispositionNameOrDefault"接受类型的第一个参数 可以找到"System.Net.Http.MultipartMemoryStreamProvider"(是 您缺少 using 指令或程序集引用?
谷歌没有返回任何相关结果。有人可以提供对此问题的见解吗?
确实,您在代码中使用的 API 在 Beta 版之后发生了变化。它旨在解决以下问题:http://aspnetwebstack.codeplex.com/workitem/53
这是更改集 http://aspnetwebstack.codeplex.com/SourceControl/changeset/8fda60945d49
如果一些额外的说明有帮助,这里是 http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2
问候特洛伊