Webclient return 尝试连接它发布的同一服务器时出现 500 错误

Webclient return 500 error when try to connect same server that it published

我有一个带有 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 上 post 时,Create 方法(使用 WebClient)return 500 错误。 IIS 服务器位于 WebClient 尝试发出请求的同一 IP 上。让这个 ip 将是 10.10.10.10.

在方法 Create i in 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 找到的相同 IP 地址上发出请求时准确地确定了 WebClient 中的问题。我该如何解决这个问题?

更新 添加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

将服务器 ip 更改为 10.10.10.10 并将我的 ip 更改为 11.11.11.11

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

Thx Andrew Morton 或建议检查日志并探索查询状态。在我的例子中,我在第一次查询中得到了重定向。在第二次查询中,我得到了授权。所以我开始检查如何修复它。这是我的修复方法:

  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 
  }

  ...

}

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

我还建议您阅读 article shared by Lex Li

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