我正在尝试将带有一些元数据的文件上传到Web API。在开发人员环境中一切都很好。但是当在Azure中托管相同的API时,出现以下日期解析错误:
从字符串“ 31/03/2019 11:33:52”到“日期”类型的转换无效。
我想StringContent应该以ISO 8601格式写日期,而事实并非如此。
接下来是我的程序的简化:
Public Async Function UploadDocFile(oHttpClient as HttpClient, url as string, ByVal oByteArray as Byte(), exs As List(Of Exception)) As Task(Of Boolean)
Dim retval As Boolean
Dim formContent = New Net.Http.MultipartFormDataContent From {
{New Net.Http.StringContent("DateCreated"), now},
{New Net.Http.StreamContent(New IO.MemoryStream(oDocfile.Stream)), "pdf", "pdf.jpg"}
}
Dim response = Await oHttpClient.PostAsync(url, formContent)
If response.StatusCode = 200 Then
retval = True
Else
exs.Add(New Exception(response.ReasonPhrase))
End If
Return retval
End Function
答案 0 :(得分:1)
您正在使用Collection Initializer向MultipartFormDataContent
添加项目;您应该遵循Add
方法的this overload,该方法分别接受类型为HttpContent
和String
的两个参数。
因此,括号({}
)中的第二个值应该是数据内容的名称,而不是其 value 。另一方面,传递给StringContent
constructor的参数应该是 value (内容),而不是 name 。您基本上已将它们换出。如果您将Option Strict
设置为On
(这是you should do,顺便说一句),那么您将遇到编译器错误,并且很容易发现了错误。
您的代码应如下所示:
Dim formContent = New Net.Http.MultipartFormDataContent From
{
{New Net.Http.StringContent(Now.ToString("SomeFormat")), "DateCreated"},
' More values.
}
..其中SomeFormat
是您所使用的Web API支持的格式。