c# – 如何在azure函数中禁用XML序列化

当我从浏览器访问我的azure函数(C#HttpTrigger)时,我得到一个带有错误消息而不是
JSON响应的XML响应.

这是可以预料到的,因为响应包含一个JObject,它可以被序列化为JSON,但不是XML,浏览器的Accept头要求优先使用XML而不是JSON.

我可以通过摆弄浏览器的Accept标头(插入application / json; q = 0.95)来使用变通方法来获得正确的响应,但我真正想要的是在Azure函数中禁用XML序列化,因为我的函数不会无论如何都要兼容XML.

有没有办法在Azure Functions中删除或禁用XML格式化程序,以便“忘记”它可以序列化为XML,并忽略请求标头中的任何application / xml?而不是让JSON格式化程序优先,尽管请求要求更喜欢XML?

最佳答案 通过一些挖掘,我找到了一个有效的答案.事实证明,HttpRequestMessageExtensions.CreateResponse扩展方法(扩展HttpRequestMessage)有几个重载,其中一些允许显式指定结果媒体类型.

而不是

return req.CreateResponse(HttpStatusCode.OK, returnObject);

我不得不写

return req.CreateResponse(HttpStatusCode.OK, returnObject, "application/json");

得到我想要的行为.

点赞