Pregunta

Estoy tratando de hacer mi propio ExceptionFilter. Fuera de la caja, ASP.NET MVC viene con el atributo [HandleError]. Esto es genial - > pero devuelve una vista de error html.

Como tal, quiero devolver algún mensaje de error json. Así que estoy haciendo la mía.

Ahora, todo funciona muy bien hasta que pruebo mi url. Sigo recibiendo un error. este es el mensaje ...

C:\Temp\curl-7.19.5>curl -i http://localhost:6969/search/foo?name=1234&key=test1xxx
HTTP/1.1 401 Unauthorized
Server: ASP.NET Development Server/9.0.0.0
Date: Mon, 14 Sep 2009 01:54:52 GMT
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 1.0
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 6
Connection: Close


"Hi StackOverflow"'key' is not recognized as an internal or external command,
operable program or batch file.

C:\Temp\curl-7.19.5>

Ok, eso no tiene sentido. Dejemos un poco de código para explicar lo que estoy tratando de hacer, entonces ...

public class HandleErrorAsJson : FilterAttribute, IExceptionFilter
{
    public void OnException(ExceptionContext filterContext)
    {
        // Snip normal checks and stuff...

        // Assume we've figured out the type of error this is.
        // I'm going to hardcode it here, right now.
        int statusCode = 401;
        string message = "Hi StackOverflow";

        // Now prepare our json output.
        filterContext.Result = new JsonResult
            {
                Data = message
            };

        // Prepare the response code.
        filterContext.ExceptionHandled = true;
        filterContext.HttpContext.Response.Clear();
        filterContext.HttpContext.Response.StatusCode = statusCode;
    }
}

Entonces ese es mi código ... y está funcionando pero no lo es.

¿Qué significa esta cosa 'clave'? ¿Qué me he perdido tratando de hacer?

¡Por favor ayuda!

¿Fue útil?

Solución

Encontré mi respuesta - > tuve que poner la url en '' ... '' (comillas) de lo contrario, intenta ejecutar lo que esté después del símbolo de signo, como un comando o algo así.

no estoy seguro de por qué, pero eso lo soluciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top