[英]Override ExecuteResult method and set Content-Type
我從ActionResult繼承了一個類,然后重寫了ExecuteResult方法。
public class CustomResult : ActionResult
{
public object Result { get; set; }
public int StatusCode { get; private set; }
public CustomResult(int statusCode, object Result)
{
this.Result = Result;
this.StatusCode = statusCode;
}
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
throw new ArgumentNullException("context");
context.HttpContext.Response.StatusCode = StatusCode;
if (StatusDescription != null)
context.HttpContext.Response.StatusDescription = StatusDescription;
HttpResponseBase Response = context.HttpContext.Response;
Response.Charset = "UTF-8";
Response.ContentType = "application/json";
context.HttpContext.Response.Write(JsonConvert.SerializeObject(this));
}
}
當我從控制器返回一個CustomResult對象時,返回的Content-Type到視圖總是“text / html”而不是CustomResult類上設置的“application / json”。
如果我在本地運行此應用程序一切正常,但當我將此部署到Azure App Service時,Content-Type始終為text / html。
我找到了解決方案! 我添加了這一行Response.TrySkipIisCustomErrors = true;
到Response對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.