JeffreySu / WeiXinMPSDK

微信全平台 .NET SDK, Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 8.0。已支持微信公众号、小程序、小游戏、微信支付、企业微信/企业号、开放平台、JSSDK、微信周边等全平台。 WeChat SDK for C#.
https://weixin.senparc.com
Apache License 2.0
8.43k stars 4.35k forks source link

微信上传媒体文件报错 #688

Closed shenlanchenwei closed 7 years ago

shenlanchenwei commented 7 years ago

( 此版块专为反馈bug及提交需求服务,不负责解答开发问题,请勿发表开发问题, 如果您需要这方面的帮助,请移步问答社区https://weixin.senparc.com/QA )

问题描述

上传微信媒体文件时POST基类会报错

具体错误行: RequestUtility.cs 259行

hc.Headers.ContentType = new MediaTypeHeaderValue(string.Format("multipart/form-data; boundary={0}", boundary));

微信官方文档 URL
发现问题的模块
模块对应的.net版本
开发环境
缓存环境
JeffreySu commented 7 years ago

@lishewen 你们有碰到过这个问题吗?

lishewen commented 7 years ago

@JeffreySu 没有,我自己的项目中也没收到过这个的错误反馈,我晚上回去再具体测下 @shenlanchenwei 具体的错误提示是?

shenlanchenwei commented 7 years ago

error @JeffreySu @lishewen

lishewen commented 7 years ago

@shenlanchenwei 把那句临时换成

            hc.Headers.Remove("Content-Type");
            hc.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=" + boundary);

或者

hc.Headers.ContentType = MediaTypeHeaderValue.Parse(string.Format("multipart/form-data; boundary={0}", boundary));

试试

lishewen commented 7 years ago

这个地方我还要看看现在是否需要 把 StreamContent 改写成 MultipartFormDataContent,更规范点

shenlanchenwei commented 7 years ago

@lishewen 这个我改了以后头没有报错了,但是上传这个还是有问题,我通过抓包发现文件流没有发送在Body里面,应该是代码有点问题,你有测试上传媒体文件的方法吗?

lishewen commented 7 years ago

这个方法的netcore移植是在RC版本中,放到现在已经有更好的解法了,不用再在raw流中拼接字符串了。 @shenlanchenwei 我写了个ConsoleApp测试过这个PR的上传文件,没有问题了的,如果你看到此回复时,@JeffreySu 还没来得及merge的话,你可以到我的分支下clone最新的代码试试

附测试代码截图 _20170728090003

shenlanchenwei commented 7 years ago

MediaApi.UploadForeverMedia(accessToken, locaFilePath); 临时素材上传还是有问题,应该是文件长传的name有问题,导致腾讯报错: errcode":41005,"errmsg":"media data missing @lishewen

JeffreySu commented 7 years ago

@shenlanchenwei media data missing 只在name超长的时候发生?

lishewen commented 7 years ago

@shenlanchenwei 试试这个PR

shenlanchenwei commented 7 years ago

@lishewen @JeffreySu 问题以解决,谢谢~~