【问题标题】:ASP.Net Core API Accessing HttpRequestMessageASP.Net Core API 访问 HttpRequestMessage
【发布时间】:2017-07-22 09:14:50
【问题描述】:

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

在我的旧应用程序中,我有一个如下所示的操作:

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 Core 应用程序中的 request.Content 为空?

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

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

错误:包 Microsoft.AspNet.WebApi.Client 5.2.2 不兼容 使用 netcoreapp1.0 (.NETCoreApp,Version=v1.0)。包裹 Microsoft.AspNet.WebApi.Client 5.2.2 支持:错误:-net45 (.NETFramework,版本=v4.5)错误:- 便携-net45+netcore45+wp8+wp81+wpa81 (.NETPortable,Version=v0.0,Profile=wp8+netcore45+net45+wp81+‌​wpa81) 错误:一个或多个包不兼容 .NETCoreApp,版本=v1.0。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 2020-08-07
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多