簡體   English   中英

覆蓋ExecuteResult方法並設置Content-Type

[英]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。

根據我的經驗,它可以在Azure Web App中正常工作。 即使我將WebApp發布到Azure環境,它也能正常工作。 如果可能,請嘗試使用Fiddler工具進行檢查。

在此輸入圖像描述

我找到了解決方案! 我添加了這一行Response.TrySkipIisCustomErrors = true; 到Response對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM