Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 404尝试将崩溃上载到hockeyapp时出错_C#_Xamarin_Portable Class Library_Hockeyapp - Fatal编程技术网

C# 404尝试将崩溃上载到hockeyapp时出错

C# 404尝试将崩溃上载到hockeyapp时出错,c#,xamarin,portable-class-library,hockeyapp,C#,Xamarin,Portable Class Library,Hockeyapp,我正在尝试使用手动将崩溃上传到HockeyApp。当使用Postman调用api链接并上传crash.log文件时,它工作正常,但当我尝试从C#代码中执行相同操作时,我得到404错误 这是我的密码: string log = ""; //log content using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.

我正在尝试使用手动将崩溃上传到HockeyApp。当使用Postman调用api链接并上传crash.log文件时,它工作正常,但当我尝试从C#代码中执行相同操作时,我得到404错误

这是我的密码:

string log = ""; //log content
using (HttpClient client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("*/*"));

    var content = new MultipartFormDataContent();

    var stringContent = new StringContent(log);
    stringContent.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("text/plain");

    content.Add(stringContent, "log", "crash.log");

    var response = await this.client.PostAsync("https://rink.hockeyapp.net/api/2/apps/[APP_ID]/crashes/upload", content);
}
我用WireShark分析邮递员发出的请求,并试图让我的请求看起来完全一样。我看到的唯一区别是,来自C#代码的请求在附件的内容配置中有filename*字段,而来自Postman的请求没有:

Content-Disposition: form-data; name="log"; filename="crash.log"; filename*=utf-8''%22crash.log%22

值得一提的是,代码是在Xamarin项目的可移植库中编写的

在@Lukas Spießsugestion之后,我请求了HockeyApp的支持。显然,它们不处理边界标头中的引号。比较邮递员的请求和我的请求,我错过了一件事

以下是解决方案:

var contentTypeString = content.Headers.ContentType.ToString().Replace("\"", "");

content.Headers.Remove("Content-Type");
content.Headers.TryAddWithoutValidation("Content-Type", contentTypeString);

为了确保这一点,URL通常会将
[APP_ID]
替换为正确的HockeyApp-ID,对吗?:)当然可以;)我建议直接用HockeyApp打开一张支持票。我必须把这个代码放在哪里,因为它不起作用?