我有一个非常简单的Web API,只有GET控制器。在get控制器内部,我正在读取一个XML文件,将该XML文件转换为JSON对象并返回它。
public JObject Get()
{
//Read XML
XDocument xDoc = XDocument.Load(@"D:\myfile.xml");
string jsonStr = JsonConvert.SerializeXNode(xDoc);
JObject json = JObject.Parse(jsonStr);
return json;
}
我想将XML阅读和JSON转换行放入异常处理程序中,如果无法打开XML文件(或任何其他文件),则返回 404错误代码(或这种情况下的任何适当代码)发生异常)。但是由于我的返回类型ID为JObject
,因此我无法返回正确的http respose,那么我该怎么做?
答案 0 :(得分:3)
您应将操作方法的返回类型更改为IHttpActionResult
,然后可以执行类似的操作
public IHttpActionResult Get()
{
if (!File.Exists(@"D:\myfile.xml"))
return NotFound();
//Read XML
XDocument xDoc = XDocument.Load(@"D:\myfile.xml");
string jsonStr = JsonConvert.SerializeXNode(xDoc);
JObject json = JObject.Parse(jsonStr);
return Ok(json);
}
这应该给您带来灵活性。
使用方法的快速说明
return OK(json)
将返回成功的(HTTP 200)响应,并在正文中带有序列化的json
。
return NotFound()
将导致请求失败和HTTP 404结果。
对于错误,理想情况下,您应该返回5xx代码,可以使用return InternalServerError();
有关ApiController
基类中这些助手和其他助手的更多信息,请查看page on microsoft docs