- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个功能齐全的 2.2 版程序迁移到 3.0 版本并替换时
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMvc();
}
使用services.AddControllers();
并替换app.UseMvc();
与:
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
其中一个 Controller 坏了。 (其他也有 Post 方法和 [FromBody] 的 Controller 也可以正常工作) Controller 和损坏的方法是:
[Route("api/vm")]
public class MainController: Controller
{
[HttpPost]
[Route("Process")]
public IActionResult GetProcess([FromBody]ProcessModel[] process)
{
...
}
}
模型:
public class ProcessModel
{
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("ExeName")]
public string ExeName { get; set; }
[JsonProperty("Path")]
public string Path { get; set; }
[JsonProperty("VersionPath")]
public string VersionPath { get; set; }
[JsonProperty("Id")]
public string Id { get; set; }
[JsonProperty("Status")]
public string Status { get; set; }
[JsonProperty("Ver")]
public string Ver { get; set; }
[JsonProperty("Args")]
public string[] Args { get; set; }
[JsonProperty("Instances")]
public List<ProcessDetails> Instances { get; set; }
[JsonProperty("Multiple")]
public string Multiple { get; set; }
}
我对 /api/vm/Process
进行的调用:
[
{
"Name": "Test",
"ExeName": "Test",
"Multiple": false,
"Path": "Test",
"VersionPath": "Test",
"Args": {
"IsFile": false
}
},
{
"Name": "Test",
"ExeName": "Test.exe",
"Multiple": false,
"Path": "Test",
"VersionPath": "Test",
"Args": {
"IsFile": false
}
}
]
该应用程序在生产环境中运行了几个月,运行良好。我所做的就是升级到 .netcore 3,现在当我调试并访问 Controller 上的方法时,我在进程变量中得到 null
注意:当应用程序首先损坏时我使用了这个线程 Using 'UseMvc' to configure MVC is not supported while using Endpoint Routing
最佳答案
自动类型转换在新的 System.Text.Json
中不可用,可能是出于性能原因。您应该使用“Newtonsoft 序列化器”或使用自定义转换器。您的一些类属性是字符串,但您正在发送 bool(多个属性)、int。
System.Text.Json
转换器示例:
像这样注册你的转换器:
services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.Converters.Add(new MyInt32Converter());
});
关于c# - 从 .net core 2.2 迁移到 3.0 时 Controller 发布 [FromBody] Null 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59532554/
这是基本设置,我有一个 asp.net core webapi Controller (在 C# 中),具有如下的 post 函数: [HttpPost] public ActionResult Po
这是基本设置,我有一个 asp.net 核心 webapi Controller (在 c# 中),带有一个像这样的 post 函数: [HttpPost] public ActionResult P
这是 Asp.Net Webform 应用程序 这是我的 Apicontroller 中的 POST 方法 public void Post([FromBody]string value) { } 我
这可能是非常基本的东西,但我无法弄清楚我哪里出错了。 我试图从 POST 正文中获取字符串,但“jsonString”仅显示为 null。我也想避免使用模型,但也许这是不可能的。我用 PostMan
在 Web API (2) 中使用属性路由时,我希望能够自动将路由参数从 URL 获取到模型参数中。这样做的原因是我的验证是在它到达操作之前在过滤器中执行的,如果没有它,附加信息就不容易获得。 考虑以
我收到了这样的请求。 POST /API/Event?EventID=15&UserID=1&Severity=5&DeptID=1&FlowTag=CE HTTP/1.1 Content-Type:
在 ASP.NET Core(本例中为 2.1)的 Controller 中使用 [FromBody] 时,它会处理所有到指定模型的转换并确保模型有效。这意味着如果提供的输入格式错误, Control
我正在尝试传递一个包含不同数据类型的对象。我总是在 Web API 中获取 orderDetails 的空值。 但是如果这样做, purchaseOrder.Attachments = null, 然
我有一个使用 ASP.NET Core 构建的新 API,但我无法将任何数据发布到端点。 这是端点的样子: [HttpPost] [Route("StudentResults")] public as
有没有[FromBody]属性的作用?我的意思是,当我使用它时: public async Task SetUser([FromBody]User 用户) 当我使用时: public async Ta
我似乎遇到了一个有趣的 Web API 问题 - 使用这个 Controller 操作,在左大括号上设置断点来检查 thing: [HttpPut] public void Test([FromBod
这个问题在这里已经有了答案: Web api attribute routing, by content type, in dot net core 2? (1 个回答) 关闭 4 年前。 客户端可
RESTful 设计更喜欢 URL 或 [FromBody] 中的数据吗? 假设我有一个 Controller 方法: [Route("ServiceActivity({serviceActivity
我有一个应该是非常基本的场景......我觉得我之前已经做过 100 次但由于某种原因它决定不工作并将我的时间浪费在一些琐碎的事情上...... 我正在使用带有属性路由的 WebAPI(喜欢它们)。
您好,我想通过我在 Web API Controller 中的 body 变量从 C# 客户端调用 Web Api 方法一直为空。如何正确设置? 客户端: IFileService imgServic
我在 web api 中有一个新方法 [HttpPost] public ApiResponse PushMessage( [FromUri] string x, [FromUri] string y
我有一个类似于 ASP.NET MVC 4 RC Web API Parameter Binding Issue 的问题,但我正在尝试使用 [FromBody] 属性来解决它。 Fiddler 报告以
我的 body 参数始终为 null 时遇到问题。这是 Controller : [HttpPost] public async void Assign([FromUri] int[]
我可以将我的数据发送到服务器,但只有当我使用 FromBody-Attribute 时。 为什么没有使用 Post 自动从 Body 中读取 json 数据? 后端网页接口(interface) [H
当我尝试发送请求“http://localhost:1234/api/case/create?signature=123456”时来自 Postman(谷歌扩展)在正文请求中使用“表单数据”,我收到错
我是一名优秀的程序员,十分优秀!