无法在远程请求上接收JSON异常消息/内容类型

时间:2011-04-11 19:25:40

标签: json asp.net-mvc-3

我有一个ASP.NET MVC3应用程序,它使用JSON与Flash UI进行通信。

我使用ActionFilterAttribute来处理JSON异常(来自ASP.NET MVC 2中的Handle JSON Exceptions:http://www.dotnetcurry.com/ShowArticle.aspx?ID=496):


public class HandleJsonExceptionAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (filterContext.Exception != null)
        {
            filterContext.HttpContext.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
            filterContext.Result = new JsonResult()
            {
                JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                Data = new
                {
                    filterContext.Exception.Message,
                }
            };
            filterContext.ExceptionHandled = true;
        }
    }
}

在localhost上执行时可以正常工作,来自fiddler的详细信息:


HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 11 Apr 2011 19:05:21 GMT
Content-Length: 34

{"Message":"No está autenticado"}

但是,当从远程客户端执行时,例如在LAN上,我得到“Content-Type:text / html”中的响应,而不是“Content-Type:application / json;”并且内容是标准的html错误页面:

500 - 内部服务器错误。 您正在查找的资源存在问题,无法显示。


HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 11 Apr 2011 19:07:53 GMT
Content-Length: 1208

我需要配置什么或哪些地方来获取远程请求的JSON响应?

我需要flash UI接收http 500错误,但是使用json消息而不是html。

2 个答案:

答案 0 :(得分:1)

看一下这篇文章,javascript似乎只是为本地请求连线。 你需要的是使用jsonp。 (带填充的json)。这将允许您执行正确的跨域请求返回json对象。

可以找到更多信息herehere

答案 1 :(得分:0)

我遇到了同样的问题,我在web.config中解决了这段代码

<httpErrors existingResponse="PassTrough"></httpErrors>