c# - 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
解决方案
现在我回答我自己的问题案例需要关闭它。
感谢Andrew Morton或建议检查日志并探索查询状态。就我而言,我在 1-st 查询中得到了重定向。在第二次查询中,我获得了未经授权。所以我开始检查如何修复它。这是我的修复方法:
- 我去 IIS 并检查防火墙规则。检查入站和出站规则是否获得了您使用的端口;
- 在 IIS 中,将位于 IIS 的 IP 地址添加到受信任的站点;
- 在我的项目中
startap.cs
添加了使用 Https:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts(); //this place
}
...
}
在所有这些点之后,我的问题已经解决了。
PS如果我的方法不起作用,我的技术主管还建议观看此主题。
推荐阅读
- android - 在卡片视图项目之间显示细线
- c# - 这只能用 c# linq 来完成吗
- arrays - Indexing nested JSON array with strange formatting
- c++ - 为什么似乎通过 std::lock_guard 获得的互斥锁在其作用域后仍会生效一段时间
- vb.net - .NET 事件不可见/无法与 vb6(vba) 一起使用?
- php - 根据 orWhere 语句显示结果
- ruby-on-rails - Rails 在注册期间创建一个用户和一个 belongs_to 模型
- python-3.x - ModuleNotFoundError:没有名为“selenium.webdriver.firefox”的模块
- c# - 计算施加在物体上的力以减去生命值
- c# - 如何使用 C# 在服务器上加密 jpeg 并使用 Crypt-JS 在浏览器上解密