无法访问 HttpResponseMessage 的正文

Emi*_*m23 1 c# httpresponse httpcontent asp.net-core-mvc asp.net-core

我目前正在使用 .NET Core Web App 开发 API 以进行测试,但我一直坚持这个。

实际上,我有这个代码:

namespace CoreWebApp.API.Admin
{
    [Route("api/country")]
    public class CountryController : Controller
    {
        // GET: api/country
        [HttpGet]
        public HttpResponseMessage Get()
        {
            List<Country> countries = Shared.Database.SqlAction.CountriesTable.GetCountries();
            return new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(JsonConvert.SerializeObject(countries), Encoding.UTF8, "application/json") };
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是返回一个HttpStatusCode和一个HttpContent。然后我应该在 Postman 上得到它:

[
    {
        "Name":"France"
    },
    {
        "Name":"Germany"
    },
    {
        "Name":"Spain"
    },
    ....
]
Run Code Online (Sandbox Code Playgroud)

状态代码 OK 200


但是,我根本没有得到这个身体,我得到的是:

{
    "version": {
        "major": 1,
        "minor": 1,
        "build": -1,
        "revision": -1,
        "majorRevision": -1,
        "minorRevision": -1
    },
    "content": {
        "headers": [
            {
                "key": "Content-Type",
                "value": [
                    "application/json; charset=utf-8"
                ]
            }
        ]
    },
    "statusCode": 200,
    "reasonPhrase": "OK",
    "headers": [],
    "requestMessage": null,
    "isSuccessStatusCode": true
}
Run Code Online (Sandbox Code Playgroud)

我现在搜索了一段时间,但仍然无法获取内容中的数据,我做错了什么?这是我的第一个 .NET Core Api,所以如果您有任何建议,请随时提供任何建议:)

谢谢你的帮助 !

BRA*_*mel 5

Asp.net core 不再支持返回HttpResponseMessage类型来解决您的问题推荐的返回类型如下

[HttpGet]
        public async Task<IActionResult> GeTask()
        {
            List<Country> countries = Shared.Database.SqlAction.CountriesTable.GetCountries();
            return Ok(countries); 
}
Run Code Online (Sandbox Code Playgroud)

完整标准 .net 中的 ApiController 看起来像这里的更多信息

//
        // Summary:
        //     Creates a System.Web.Http.Results.ResponseMessageResult with the specified response.
        //
        // Parameters:
        //   response:
        //     The HTTP response message.
        //
        // Returns:
        //     A System.Web.Http.Results.ResponseMessageResult for the specified response.
        protected internal virtual ResponseMessageResult ResponseMessage(HttpResponseMessage response);
Run Code Online (Sandbox Code Playgroud)

并且来自.net core的控制器基类的源代码没有任何定义 HttpResponseMessage