Нужна помощь с пользовательским ASP.NET MVC IExceptionFilter

StackOverflow https://stackoverflow.com/questions/1419414

Вопрос

Я пытаюсь создать свой собственный ExceptionFilter. Из коробки ASP.NET MVC поставляется с атрибутом [HandleError]. Это здорово - > но он возвращает некоторую ошибку HTML View.

Поэтому я хочу вернуть сообщение об ошибке json. Так что я делаю свое.

Теперь все отлично работает, пока я не проверю свой URL. Я продолжаю получать ошибку. это сообщение ....

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>

Хорошо, это не имеет смысла. Давай покажем код, чтобы объяснить, что я пытаюсь сделать, а затем ...

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;
    }
}

Итак, это мой код .... и он работает, но это не так.

Что означает эта ключевая вещь? что я пропустил, пытаясь сделать?

Пожалуйста, помогите!

Это было полезно?

Решение

Нашел мой ответ - > Я должен был указать URL в "..." (кавычки), в противном случае он пытается выполнить все, что находится после символа амперсанда, в виде команды или чего-то еще.

не знаю почему, но это исправляет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top