aje*_*jeh 3 c# json.net asp.net-web-api
我正在构建一个教科书.NET WebAPI Web服务,在最简单的情况下,它应该接收一个GET请求并返回一个JSON对象数组.
但是该项目还加载了NewtonsoftJSON nuget包,显然该包重新定义了ApiController类,因此它的Json()方法有不同的声明.最终结果是我得到以下编译时错误:
如何保护我的控制器声明不被Newtonsoft重新定义?
public class ImmediateInformationController : ApiController
{
public JsonResult Get([FromUri] ImmediateInformation ii)
{
// some code here
return this.Json(iil, JsonRequestBehavior.AllowGet);
}
}
Run Code Online (Sandbox Code Playgroud)
一点背景:最初我只是回来iil,但是在浏览器中测试时,它提示下载ImmediateInformation.json文件,其中包含我需要的JSON.以上是尝试将JSON作为纯文本返回,这使我发现Newtonsoft ApiController在参数类型与MSDN文档不匹配时重新定义.
重新上限:问题只是使用JSON下载问题来说明我在做什么.我如何确保当我声明控制器类是其后代时ApiController,它是Microsoft的API控制器,而不是Newtonsoft的?
Web API 2默认包含JSON.NET,并在其Json()方法中使用它.您的教程可能不是针对Web API 2,而是针对早期版本,或MVC而不是Web API.
省略JsonRequestBehavior:
return this.Json(iil);
Run Code Online (Sandbox Code Playgroud)
或者只是返回正确的返回类型,让Web API处理序列化:
public ImmediateInformation Get([FromUri] ImmediateInformation ii)
{
return ii;
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用IHttpActionResult执行此操作:
public IHttpActionResult Get([FromUri] ImmediateInformation ii)
{
return this.Ok(ii);
}
Run Code Online (Sandbox Code Playgroud)
根据您的编辑和评论,您实际上在寻找我如何说服IE只显示application/json而不是提供下载?.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |