C# ';system.argumentexception';上载多部分时
我试图使用System.Net.Http.HttpClient发布多部分数据,但当我实例化我的内容时,出现以下异常:C# ';system.argumentexception';上载多部分时,c#,windows-phone,multipartform-data,dotnet-httpclient,C#,Windows Phone,Multipartform Data,Dotnet Httpclient,我试图使用System.Net.Http.HttpClient发布多部分数据,但当我实例化我的内容时,出现以下异常: A first chance exception of type 'System.ArgumentException' occurred in System.Net.Http.DLL An exception of type 'System.ArgumentException' occurred in System.Net.Http.DLL and wasn't handled
A first chance exception of type 'System.ArgumentException' occurred in System.Net.Http.DLL
An exception of type 'System.ArgumentException' occurred in System.Net.Http.DLL and wasn't handled before a managed/native boundary
e: System.ArgumentException: The format of value '---###---' is invalid.
Parameter name: boundary
at System.Net.Http.MultipartContent.ValidateBoundary(String boundary)
at System.Net.Http.MultipartContent..ctor(String subtype, String boundary)
at System.Net.Http.MultipartFormDataContent..ctor(String boundary)
at RestClientUploadFoto.MultipartStackOverflow.<postMultipart>d__2.MoveNext()
public async Task postMultipart()
{
var client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "multipart/form-data");
// boundary
String boundary = "---###---"; // should never occur in your data
// This is the postdata
MultipartFormDataContent content = new MultipartFormDataContent(boundary);
content.Add(new StringContent("12", Encoding.UTF8), "userId");
content.Add(new StringContent("78", Encoding.UTF8), "noOfAttendees");
content.Add(new StringContent("chennai", Encoding.UTF8), "locationName");
content.Add(new StringContent("32.56", Encoding.UTF8), "longitude");
content.Add(new StringContent("32.56", Encoding.UTF8), "latitude");
Console.Write(content);
// upload the file sending the form info and ensure a result.
// it will throw an exception if the service doesn't return a valid successful status code
await client.PostAsync(fileUploadUrl, content)
.ContinueWith((postTask) =>
{
postTask.Result.EnsureSuccessStatusCode();
});
}
#
在MIME边界中无效
发件人:
“multipart”媒体类型的唯一必需全局参数是
边界参数,由来自
通过邮件网关已知非常健壮的字符集,以及
不以空格结尾。(如果显示边界分隔符行
以空格结尾,空格必须假定为
由网关添加,并且必须删除。)它是正式指定的
由下列BNF:
boundary := 0*69<bchars> bcharsnospace
bchars := bcharsnospace / " "
bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" /
"+" / "_" / "," / "-" / "." /
"/" / ":" / "=" / "?"
边界:=0*69 bcharsnospace
bchars:=bcharsnospace/“”
bcharsnospace:=数字/ALPHA/“/”(“/”)/
"+" / "_" / "," / "-" / "." /
"/" / ":" / "=" / "?"
因此,基本上,您应该使用不包含#
的边界字符串。我建议使用一个也不包含连字符的,因为边界线无论如何都会有连字符(在开始和结束处)。把它们也放在边界上有点混乱
除非您需要特定的边界,否则我建议您只调用无参数构造函数,它将使用随机GUID作为边界。#
在MIME边界中无效
发件人:
“multipart”媒体类型的唯一必需全局参数是
边界参数,由来自
通过邮件网关已知非常健壮的字符集,以及
不以空格结尾。(如果显示边界分隔符行
以空格结尾,空格必须假定为
由网关添加,并且必须删除。)它是正式指定的
由下列BNF:
boundary := 0*69<bchars> bcharsnospace
bchars := bcharsnospace / " "
bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" /
"+" / "_" / "," / "-" / "." /
"/" / ":" / "=" / "?"
边界:=0*69 bcharsnospace
bchars:=bcharsnospace/“”
bcharsnospace:=数字/ALPHA/“/”(“/”)/
"+" / "_" / "," / "-" / "." /
"/" / ":" / "=" / "?"
因此,基本上,您应该使用不包含#
的边界字符串。我建议使用一个也不包含连字符的,因为边界线无论如何都会有连字符(在开始和结束处)。把它们也放在边界上有点混乱
除非您需要特定的边界,否则我建议您只调用无参数构造函数,它将使用随机GUID作为边界。那么异常的详细信息是什么?请发布完整的堆栈跟踪,包括消息。这似乎是不言自明的,不是吗<代码>-###--是无效的边界。你试过使用不同的边界字符串吗?谢谢,我不知道边界是什么,我将首先阅读它。那么异常的细节是什么?请发布完整的堆栈跟踪,包括消息。这似乎是不言自明的,不是吗<代码>-###--是无效的边界。你试过使用不同的边界字符串吗?谢谢,我不知道边界是什么,我要先读一读。你知道如何从那里得到反应体吗?@eeadev:我不知道你说的“从那里”是什么意思,但这听起来应该是一个新问题。是的,对;这是帖子:你知道如何从那里得到回应吗?@eeadev:我不知道你所说的“从那里”是什么意思,但这听起来应该是一个新问题。是的,对;以下是帖子: