Closed kchanlee closed 7 years ago
你用的解决方案文件(.sln)是哪个?
@JeffreySu 我用的是Developer-FullDotNet branch commit c9600a61,直接拿Senparc.Weixin、Senparc.Weixin.MP、Senparc.Weixin.MP.CoreMvcExtension的源码来用,把它们的.csproj加到我的.sln里面。
你的Action是怎么写的可以给我看一下吗?
@JeffreySu
[HttpPost]
[ActionName("Index")]
public async Task<ActionResult> Post(PostModel postModel)
{
if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, _settings.WeChatToken))
{
_logger.LogError("Invalid Parameter received!");
return Content("Invalid Parameter");
}
postModel.Token = _settings.WeChatToken;
postModel.EncodingAESKey = _settings.WeChatEncodingAESKey;
postModel.AppId = _settings.WeChatAppId;
try
{
/**
* Some metheds/properties (e.g. Seek()) of Stream are not supported in Request.Body
* but are invoked in WechatMessageHandler which cause exception. So we explicitly copy
* to a MemoryStream to avoid this.
*/
var stream = new MemoryStream();
await Request.Body.CopyToAsync(stream);
stream.Position = 0;
var handler = new WechatMessageHandler(stream, postModel, _chatStore, _messagerHandlerLogger);
await handler.ExecuteAsync();
return new WeixinResult(handler);
}
catch (Exception e)
{
_logger.LogError(e, "Failed to process user's message.");
return new WeixinResult(e.ToString());
}
参考 Senparc.Weixin.MP.CoreSample 项目中 WeixinController 里面,试试看这样写:
return new FixWeixinBugWeixinResult(messageHandler);//v0.8+
@JeffreySu 谢谢你的及时解答,我用以下方法解决问题了
return Content(handler.FinalResponseDocument.ToString(), "text/xml");
@JeffreySu 我觉得这应该算是个bug,希望能在后续版本修复
非常感谢这么细心且给我们建议! 实际开发的话,你直接用我上面这个FixWeixinBugWeixinResult取代WeixinResult就行了,WeixinResult当时是用来解决其他问题的,但是基本上已经不在Demo里面出现了。
看 \src\Senparc.Weixin.MP.Sample.vs2017\Senparc.Weixin.MP.Sample.vs2017.sln 这个是从.NET 4.5移植过来的Sample,可以正常运行。
( 此版块专为反馈bug及提交需求服务,不负责解答开发问题,请勿发表开发问题, 如果您需要这方面的帮助,请移步
问答社区
:https://weixin.senparc.com/QA )问题描述
使用CoreMvc的WeixinResult,ContentResultExecutor.ExecuteAsync() - set_ContentType()抛异常
看起来原因应该是:在
WeixinResult.ExecuteResult()
里写了一次context.HttpContext.Response.Body
,随后调用ContentResult.ExecuteResult()
,在那里面又写了一次context.HttpContext.Response.Body
所导致。异常详情如下:
微信官方文档 URL
微信官方文档快照(直接复制关键内容到下方)
发现问题的模块
模块对应的.net版本
开发环境
缓存环境