Метод записи фильтра IHttpModule не вызывается asp.net

Я пытаюсь изменить ответ, чтобы получить jsonp (для веб-сервисов), но проблема в том, что метод записи никогда не вызывается, только в конце вызывается flush(), URL-адрес localhost: 8080/api/employees

его вызывающий веб-API и сотрудник - это файл контроллера,

Метод контроллера, который называется

public List<Models.Employee> Get() {

            var employees = from e in _context.Employees
                            select new Models.Employee {
                                Id = e.EmployeeID,
                                FirstName = e.FirstName,
                                LastName = e.LastName
                            };


            return employees.ToList();

}

Метод IHTTPModule, который вызывается

public void OnReleaseRequestState(object sender, EventArgs e)
        {
            HttpResponse response = HttpContext.Current.Response;
            if (response.ContentType != JSON_CONTENT_TYPE && response.ContentType != JSON_CONTENT_TYPE1) return;

            //response.ContentEncoding =
           // char[] c = { 'd', 's', 'w', 'w' };

            response.Filter = new JsonResponseFilter(response.Filter);
            //response.Cache.
           // response.ClearContent();
           // response.Write(c, 0, 4);
           // response.Flush();
        }

Теперь JsonResponseFilter.write не вызывается, вот в чем проблема, кто-нибудь ответит, чтобы решить ее.


person MZH    schedule 29.05.2012    source источник


Ответы (1)


Вы все делаете неправильно. Не используйте никакие IHttpModules. Правильный способ добиться этого в веб-API — использовать пользовательский программа форматирования мультимедиа. Например, есть JsonpFormatter, который вы можете интегрировать в Application_Start и который активирует JSONP для ваших веб-методов:

var config = GlobalConfiguration.Configuration;
config.Formatters.Insert(0, new JsonpMediaTypeFormatter());
person Darin Dimitrov    schedule 29.05.2012