ASP.Net核心API访问HttpRequestMessage

时间:2017-03-02 15:05:13

标签: c# asp.net asp.net-core

我有一个ASP.Net 4.5应用程序,我正在尝试升级到ASP.Net Core。此应用程序接收来自第三方应用程序的呼叫。

在我的旧应用程序中,我有一个看起来像这样的动作:

public async Task<HttpResponseMessage> RealTimeAsync(HttpRequestMessage request)
{
    var StatusMessage = string.Empty;
    try
    {
        var doc = new XmlDocument();
        doc.Load(await request.Content.ReadAsStreamAsync());

从4.5开始这很好用。但是,当我在ASP.Net核心中使用此代码时,我得到一个“对象引用未设置为对象的实例”错误,因为request.Content为null。

进入两个应用程序(4.5和.Net Core)的请求是相同的。为什么我的.Net Core应用程序中的request.Content为空?

当我引用此帖子时:ASP.NET Core HTTPRequestMessage returns strange JSON message

我尝试安装建议的Nuget Package。但是,它与.Net Core不兼容:

  

错误:包Microsoft.AspNet.WebApi.Client 5.2.2不兼容   使用netcoreapp1.0(.NETCoreApp,Version = v1.0)。包   Microsoft.AspNet.WebApi.Client 5.2.2支持:错误: - net45   (.NETFramework,Version = v4.5)错误: -   便携式net45 + netcore45 + WP8 + wp81 + wpa81   (.NETPortable,版本= V0.0,简介= WP8 + netcore45 + net45 + wp81 + wpa81)   错误:一个或多个软件包与之不兼容   .NETCoreApp,版本= 1.0。

1 个答案:

答案 0 :(得分:4)

需要重构该代码以使用更新的结构。

public Task<IActionResult> RealTimeAsync() {
    var StatusMessage = string.Empty;
    try {
        var request = this.Request;
        var doc = new XmlDocument();
        doc.Load(request.Body); //request.Body returns a stream
    //...other code...