c# - ASP.NET Core - 调用控制器 HTTP 端点总是导致“错误请求”
问题描述
我已经自动生成了一个控制器来处理GearComponent
(我的自定义类)的创建/插入/删除。例如,此POST
方法处理 a 的插入,然后从数据库GearComponent
中添加正确的主键:id
// POST: api/GearComponents
[HttpPost]
public async Task<IActionResult> PostGearComponent([FromBody] GearComponent gearComponent)
{
if (!ModelState.IsValid)
{
return new BadRequestObjectResult(
ModelState.Values
.SelectMany(e => e.Errors)
.Select(e => e.ErrorMessage));
}
_context.GearComponents.Add(gearComponent);
await _context.SaveChangesAsync();
return CreatedAtAction("GetGearComponent", new { id = gearComponent.Id }, gearComponent);
}
我想在 ASP.NET Core 2.1 应用程序运行时不断地写入数据库(它是一个“WebCrawler”-Thing)。该线程将我引向有关如何实现 a并在启动时注册它的线程。BackgroundService
这是我的服务(它只是插入虚拟数据):
public class WebCrawlerService : BackgroundService
{
private readonly HttpClient client = new HttpClient();
private readonly string requestUrl = "https://localhost:44377/api/controller/";
public WebCrawlerService() { }
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
var httpContent = new StringContent(JsonConvert.SerializeObject(new GearComponent("Name", "Description", "08.12.2018")));
var result = client.PostAsync(requestUrl, httpContent);
await Task.Delay(2000);
}
}
}
虽然插入完全相同GearComponent
(JSON-String 相同)但Postman
效果很好:
我总是得到
400 错误请求
由此result
(见WebCrawlerService
):
var result = client.PostAsync(requestUrl, httpContent);
为什么?感谢@Haldo,它现在正在工作:
var httpContent = new StringContent(JsonConvert.SerializeObject(new GearComponent("Name", "Description", "08.12.2018")), Encoding.UTF8, "application/json");
解决方案
推荐阅读
- python - 删除文本文件python中的列
- python - 依次将点积应用于 3D numpy 数组的切片
- php - 获取在 Woocommerce 中购买过东西的所有客户的列表
- openssl - 使用主题中的“T”和“uidNumber”属性创建 CSR 时出错
- google-app-engine - Google App Engine - 什么算作前端?
- c++ - 根据分量 1、2(和 3)对空间(2D/3D)向量的向量进行排序
- docker - Docker 工具箱 TLSParameterError
- docker - Docker - 我们可以通过使用 Docker 社区版在容器内运行的应用程序来管理身份验证系统、用户会话和 cookie 吗?
- javascript - Uncaught SyntaxError: Unexpected token ,
- string - 如何将整数转换为没有 0x 的十六进制字符串(Julia 1.0)