webapi 中的错误 - 无法从“System.Web.Mvc.JsonRequestBehavior”转换为“Newtonsoft.Json.JsonSerializerSettings”
Posted
技术标签:
【中文标题】webapi 中的错误 - 无法从“System.Web.Mvc.JsonRequestBehavior”转换为“Newtonsoft.Json.JsonSerializerSettings”【英文标题】:error in webapi - cannot convert from 'System.Web.Mvc.JsonRequestBehavior' to 'Newtonsoft.Json.JsonSerializerSettings' 【发布时间】:2017-10-27 12:35:20 【问题描述】:在 webapi jsonrequestbehaviour 不起作用,显示无法将 'System.Web.Mvc.JsonRequestBehavior' 转换为 'Newtonsoft.Json.JsonSerializerSettings'
代码
public ActionResult AddTemprature(string EmployeeName, int EmployeeId, string Location)
try
using (EmployeeDBEntities DB = new EmployeeDBEntities())
WebApi.Employee emp = new WebApi.Employee();
// EmployeeModel Emp = new EmployeeModel();
emp.EmpName = EmployeeName;
emp.EmpId = EmployeeId;
emp.EmpLocation = Location;
DB.Employees.Add(emp);
DB.SaveChanges();
return Json(true, JsonRequestBehavior.AllowGet);
catch (Exception Ex)
return Json(false, JsonRequestBehavior.AllowGet);
【问题讨论】:
请将鼠标悬停在“Json”上并告诉我们它的来源。我怀疑有一些有趣的地方,比如Json
的重复,当它应该寻找控制器的 Json 方法时
枚举 system.System.Web.Mvc.JsonRequestBehaviour.may 应该是这样的“return Json((object)new success = false );”
Using JSON.NET as the default JSON serializer in ASP.NET MVC 3 - is it possible?的可能重复
我刚试了一下,在里面放一个布尔值不会导致编译错误。只要Json
是纯 ASP.NET MVC 版本的 Json。你有没有发现Json
是在哪里定义的?您的Json
方法接受JsonSerializerSettings
而不是正常的JsonRequestBehaviour
一定是有原因的
能不能选择Json去定义,是定义protected internal JsonResult Json(object data, JsonRequestBehavior behavior);
【参考方案1】:
您正在使用控制器 json 响应,而不是 ApiController 响应类型。 使用下面的代码,你应该已经准备好了。
return new JsonResult()
Data = false,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
;
【讨论】:
【参考方案2】:我遇到了同样的问题。事实证明,我将类定义为“public class PersonalApiController:ApiController”而不是“public class PersonalApiController:Controller”。更改解决了问题。
【讨论】:
【参考方案3】:将公共类 shahriarController : ApiController 更改为 公共类 shahriarController :控制器。 您必须从 Controller 继承,而不是从 ApiController 继承。 它将解决“JsonRequestBehavior.AllowGet”。
public class shahriarController : Controller
public ActionResult Get()
List<Student> list = new List<Student>();
list.Add(new Student() Name = "sjass", Roll = "5544" );
list.Add(new Student() Name = "wwww", Roll = "0777" );
list.Add(new Student() Name = "rrttt", Roll = "4355" );
return Json(list, JsonRequestBehavior.AllowGet);
【讨论】:
以上是关于webapi 中的错误 - 无法从“System.Web.Mvc.JsonRequestBehavior”转换为“Newtonsoft.Json.JsonSerializerSettings”的主要内容,如果未能解决你的问题,请参考以下文章
从 C# 调用 WebApi 获取异常 HttpRequestException
.NET 6 WebApi 错误使用 Visual Studio 2022 当前
通过 AJAX 将 JSON 数据发布到 Web API 失败,并显示“无法将 JSON 值转换为 System.Int32”
AspNet Core WebApi 在启动时失败并出现错误 System.Collections.Generic.KeyNotFoundException