c# - 将数据从 dotnetcore api 发布到 .net api 不起作用

标签 c# .net api .net-core

我们在 DDD(领域驱动设计)环境中工作,我们有许多使用 .Net 制作的 API。我们正在创建的最新站点是一个 dotnetcore 站点,我们希望它调用所有旧的 .Net API:s。问题是我无法获得旧 API 的任何值。每次我向旧 API 发布内容时它都会变为空。当我创建一个 dotnetcore api 时,它工作正常。 dotnetcore 是否存在调用旧 .net API 的已知问题?

旧 API:

          [HttpPost]
    [Route("GetIllustration")]
    public async Task<HttpResponseMessage> GetIllustration([FromBody] JsData illustrationRequest)
    {
        if(illustrationRequest == null)
        {
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Request was null");
        }
        //var modelService = modelLookupService.Get(illustrationRequest.ModelName);
        //var illustration = modelService.Get(illustrationRequest);
        return Request.CreateResponse(HttpStatusCode.Accepted, illustrationRequest);
    }

工作点网核心:

          [HttpPost]
    [Route("GetIllustration")]
    public IActionResult GetIllustration([FromBody] JsData illustrationRequest)
    {
        if (illustrationRequest == null)
        {
            return BadRequest(illustrationRequest);
        }
        return Ok(illustrationRequest);
    }

返回类型不同,但在不同类型的API中是相同的方法。

编辑 1:

调用 .net api:

 public IActionResult Get(GetIllustrationRequest request)
      {
        var req = new JsData()
        {
            CountryCode = "DE",
            DrawSideInfo = true,
            IlXml = "XML",
            ImageSizeHeight = 123,
            ImageSizeWidth = 1234,
            LargeImageSizeHeight = 12345,
            LargeImageSizeWidth = 123456,
            ModelName = "SUPERIOR",
            ShowInside = true,
            SupplierName = "NORMSTAHL",
            TopItemName = "SUPERIOR+42",
            XposText = "HAJ",
            YposText = "DÅÅ"
        };
        return PostAsJson("/GetIllustration", req);
    }

enter image description here

对 dotnetcore api 的工作调用:

   public IActionResult Get(GetIllustrationRequest request)
    {
        var req = new JsData()
        {
            CountryCode = "DE",
            DrawSideInfo = true,
            IlXml = "XML",
            ImageSizeHeight = 123,
            ImageSizeWidth = 1234,
            LargeImageSizeHeight = 12345,
            LargeImageSizeWidth = 123456,
            ModelName = "SUPERIOR",
            ShowInside = true,
            SupplierName = "NORMSTAHL",
            TopItemName = "SUPERIOR+42",
            XposText = "HAJ",
            YposText = "DÅÅ"
        };
        return PostAsJson("api/Configuration/GetIllustration", req);
    }

enter image description here

编辑 2:

这是实际的邮政编码:

   using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(BaseUri);
                var cancellationToken = new CancellationToken();
                client.DefaultRequestHeaders.Add("X-Content-Type-Options", "nosniff");                 
                if (!string.IsNullOrEmpty(OAuth2Token))
                {
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                        "BEARER",
                        OAuth2Token);
                }
                var response = client.PostAsJsonAsync(path, value, cancellationToken).Result;
                var stringResult = response.Content.ReadAsStringAsync();
                var result = JsonConvert.DeserializeObject<object>(stringResult.Result);
                return Ok(result);
            }

最佳答案

显然 dotnetcore 由于某种原因无法处理 postasjsonasync 方法。所以我不得不手动更改我的方法:

                var content = JsonConvert.SerializeObject(value);
                HttpContent httpContent = new StringContent(content, Encoding.UTF8, "application/json");
                var response = client.PutAsync(path , httpContent, cancellationToken).Result;
                var stringResult = response.Content.ReadAsStringAsync();

代替:

            var response = client.PutAsJsonAsync(path, value, cancellationToken).Result;
            var stringResult = response.Content.ReadAsStringAsync();
            var result = JsonConvert.DeserializeObject<object>(stringResult.Result);

关于c# - 将数据从 dotnetcore api 发布到 .net api 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43908982/

相关文章:

c# - 无法捕获 Winforms 中未处理的异常

rest - 在Docker API中对标签进行过滤不起作用(可能是bug?)

c# - 亚马逊 API - 顶级客户评论员

c# - 使用 JSON.NET 升级 JSON 文档

rest - 如何使用 postman 的github api

c# - 如何让我的游戏禁用同时点击?

c# - 带通滤波器不能旋转超过 90 度

c# - 导航和硬件后退按钮

.net - 在哪里可以找到 Microsoft .NET Framework 开发指南?

.net - global.asax 上缓慢的 Application_Start 造成死锁