首页 > 解决方案 > Webclient 在尝试连接它发布的同一服务器时返回 500 错误

问题描述

我有一个有 2 种方法的控制器

public async Task<IActionResult> Create([FromBody] TaskRequest value)
{
  var content = CustomerRepository.GetUserInfo(value.Id);
  if (content != null)
  {
    return Ok(content);
  }
  else
  {
    return BadRequest();
  }
}

[HttpGet]
public async Task<IActionResult> Status()
{
  return Ok("work");
}

Status我用来检查服务工作的方法。

所以,当我在我的设备上运行我的服务时,一切正常。但是当我在 IIS 上发布时,方法 Create(使用 WebClient)返回 500 错误。IIS 服务器位于 WebClient 尝试发出请求的同一 IP 上。让这个 ip 将是10.10.10.10.

在方法 Create i 中CustomerRepository.GetUserInfo(value.Id)使用WebClient

try
{
  byte[] response = client.UploadData(requestEndpoint, "POST",
      System.Text.Encoding.UTF8.GetBytes(requestData));
  client.Encoding = System.Text.Encoding.UTF8;
  string responce = client.Encoding.GetString(response);

  return responce;  
}
catch (Exception e)
{
  throw e;
}

requestData在这部分代码之前生成并包含xml。

requestEndpoint = "http://10.10.10.10:80/Sevice/Service.svc"

我测试了代码的所有部分,并在 WebClient 尝试在 IIS 中与 IIS 所在的相同 IP 地址上发出请求时完全确定该问题。我该如何解决这个问题?

UPD 添加 ISS 日志信息

2020-07-07 08:52:06 10.10.10.10 POST /api/task/create - 80 - 11.11.11.11 PostmanRuntime/7.26.1 - 307 0 0 15
2020-07-07 08:52:06 10.10.10.10 POST /Service/Service.svc - 80 - 10.10.10.10 Mozilla/5.0+(Windows;+U;+MSIE+9.0;+Windows+NT+9.0;+en-US) - 401 0 0 0
2020-07-07 08:52:06 10.10.10.10 POST /api/task/create - 443 - 11.11.11.11 PostmanRuntime/7.26.1 http://10.10.10.10/api/task/create 500 0 0 15

将服务器 ip10.10.10.10和我的 ip 更改为11.11.11.11

标签: c#asp.net-coreiiswebclient

解决方案


现在我回答我自己的问题案例需要关闭它。

感谢Andrew Morton或建议检查日志并探索查询状态。就我而言,我在 1-st 查询中得到了重定向。在第二次查询中,我获得了未经授权。所以我开始检查如何修复它。这是我的修复方法:

  1. 我去 IIS 并检查防火墙规则。检查入站和出站规则是否获得了您使用的端口;
  2. 在 IIS 中,将位于 IIS 的 IP 地址添加到受信任的站点;
  3. 在我的项目中startap.cs添加了使用 Https:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  if (env.IsDevelopment())
  {
    app.UseDeveloperExceptionPage();
  }
  else
  {
    app.UseHsts(); //this place 
  }

  ...

}

在所有这些点之后,我的问题已经解决了。

我还建议您阅读Lex Li分享的文章

PS如果我的方法不起作用,我的技术主管还建议观看此主题。


推荐阅读