我正在尝试更改响应以获取jsonp(对于Web服务),但问题是write方法永远不会被调用,最后只调用flush(),url是 本地主机:8080 / API /员工
其调用web api和employee是一个控制器文件,
控制器方法,名为
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这个问题,任何人都回复解决它
答案 0 :(得分:2)
你做错了。不要使用任何IHttpModules。在Web API中实现此目的的正确方法是使用自定义media formatter。例如,您可以将JsonpFormatter集成到Application_Start
中,并为您的网络方法启用JSONP:
var config = GlobalConfiguration.Configuration;
config.Formatters.Insert(0, new JsonpMediaTypeFormatter());