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 或建议检查日志并探索查询状态。在我的例子中,我在第一次查询中得到了重定向。在第二次查询中,我得到了授权。所以我开始检查如何修复它。这是我的修复方法:
- 我进入 IIS 并检查防火墙规则。检查入站和出站规则是否有您使用的端口;
- 在 IIS 中将 IIS 所在的 IP 地址添加到受信任的站点;
- 在我的
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。如果我的方法不起作用,我的技术主管还建议观看此 。
我有一个带有 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 或建议检查日志并探索查询状态。在我的例子中,我在第一次查询中得到了重定向。在第二次查询中,我得到了授权。所以我开始检查如何修复它。这是我的修复方法:
- 我进入 IIS 并检查防火墙规则。检查入站和出站规则是否有您使用的端口;
- 在 IIS 中将 IIS 所在的 IP 地址添加到受信任的站点;
- 在我的
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。如果我的方法不起作用,我的技术主管还建议观看此