2017-03-02 64 views
4

我有一个ASP.Net 4.5应用程序,我试图升级到ASP.Net核心。此应用程序接收来自第三方应用程序的呼叫。ASP.Net核心API访问HttpRequestMessage

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

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为空。

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

当我引用这篇文章:ASP.NET Core HTTPRequestMessage returns strange JSON message

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

error: Package Microsoft.AspNet.WebApi.Client 5.2.2 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.AspNet.WebApi.Client 5.2.2 supports: error: - net45 (.NETFramework,Version=v4.5) error: - portable-net45+netcore45+wp8+wp81+wpa81 (.NETPortable,Version=v0.0,Profile=wp8+netcore45+net45+wp81+‌​wpa81) error: One or more packages are incompatible with .NETCoreApp,Version=v1.0.

回答

3

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

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...