【发布时间】:2016-06-17 02:02:16
【问题描述】:
HttpMessageResponse 返回的内容在显式设置后为空白/空
我已经使用最新的 .net Framework 4.6.1 创建了一个 WebApi,并正在尝试将一些 TwiML 传回给 Twilio(不是真正的问题/问题,因为即使使用纯文本我也有问题)。
出于某种原因,无论我做什么,在为 HttpResponseMessage 设置内容时,该内容都不会传回给调用者。我使用过 Postman 和 Fiddler,虽然在通过 StringContent 设置内容后会显示内容标题,但我试图传回的实际内容却没有。然而,它似乎显示在 ContentLength 中。
我真的很困惑,可能忽略了一些非常简单的事情,但到目前为止已经浪费了一天多的时间。
我只显示文本试图被发回,没有任何花哨的东西,但我什么也没有得到!在我的真实用例中,我试图将一串 XML 作为文本/xml 类型传回。但是即使是基本的文本字符串也不会回来!
非常感谢任何帮助,这完全让我难过。
public HttpResponseMessage Post(TwilioCall call)
{
...
...
...
var responseMessage = new HttpResponseMessage
{
Content = new StringContent("Representative Text Here")
};
return responseMessage;
}
以下返回Postman,可以看到实际内容为空白:
{
"Version": {
"Major": 1,
"Minor": 1,
"Build": -1,
"Revision": -1,
"MajorRevision": -1,
"MinorRevision": -1
},
"Content": {
"Headers": [
{
"Key": "Content-Type",
"Value": ["text/plain; charset=utf-8"]
}]
},
"StatusCode": 200,
"ReasonPhrase": "OK",
"Headers": [],
"RequestMessage": null,
"IsSuccessStatusCode": true
}
那是漂亮的版本。这是响应看起来像原始的样子。 {"版本":"Major":1,"Minor":1,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},"Content": {"Headers":[{"Key":"Content-Type","Value":["text/xml; charset=utf-8"]}]},"StatusCode":200,"ReasonPhrase":"OK ","Headers":[],"RequestMessage":null,"IsSuccessStatusCode":true}
另一个非常普通的普通帖子回复示例:
:(
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using System.Net.Http;
using System.Text;
using MyNamespace.Models;
namespace MyNamespace.Controllers
{
[Route("[controller]")]
public class BasicTextResponseController : Controller
{
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// POST api/values
[HttpPost]
public HttpResponseMessage Post(TwilioCall call)
{
var responseMessage = new HttpResponseMessage
{
Content = new StringContent("Text to return.")
};
return responseMessage;
}
}
}
【问题讨论】:
-
为什么你的邮递员的回复是这样的?它不应该只是纯文本吗?与我的邮递员一起尝试使用相同的代码,它正在工作。我认为在您的代码中某处注入响应并更改输出格式,因此响应不正确。
-
不知道是不是新框架的bug?我正在尝试输出一个非常普通的响应。会尝试更多,但我现在哭了。
-
是的,我创建了一个非常普通的控制器 - 将它添加到最后。它所做的只是在帖子上接受一个课程,没什么特别的。
-
你得到的 HTTP 响应代码是什么?
-
200 - 它返回正常,只是没有实际内容,无论我输入的内容是什么字符串、xml 等。 :(
标签: c# .net asp.net-web-api .net-4.6.1