我有一个ASP.NET MVC应用程序,我希望我的一个控制器返回JsonResult。所以,我创建了以下类:
public class TestResponse
{
public string ErrorMessage { get; set; }
}
public class JsonBadRequestResult : JsonResult
{
public JsonBadRequestResult()
{
}
public JsonBadRequestResult(string message)
{
this.Data = message;
}
public JsonBadRequestResult(object data)
{
this.Data = data;
}
public override void ExecuteResult(ControllerContext context)
{
this.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
var response = context.HttpContext.Response;
response.StatusCode = 400;
base.ExecuteResult(context);
}
}
我有一个像这样的简单控制器方法:
[HttpPost]
public ActionResult TestPost()
{
return new JsonBadRequestResult(new TestResponse { ErrorMessage = "Test Message" });
}
当我在本地调用TestPost方法时,我得到了预期的输出。
{
"ErrorMessage": "Test Message"
}
但是,当我将此应用程序部署为Azure Web App并调用相同的TestPost方法(使用Postman)时,我得到以下输出。输出的Json主体被剥离。
Bad Request
我该如何解决这个问题?
答案 0 :(得分:1)
正如Swikruti Bose所说,我们可以在Web.config中添加以下设置。它在我身边正常工作。我们可以从httpErrors获取有关document元素的更多信息。
PassThrough如果存在现有响应,则保持响应不变
<system.webServer>
<httpErrors existingResponse="PassThrough"/>
</system.webServer>