2012-05-29 26 views
0

我試圖改變獲取jsonp(對於Web服務)的響應,但問題是寫入方法永遠不會調用只有flush()被調用最後,網址是 本地主機:8080/API /員工IHttpModule過濾器寫入方法不稱爲asp.net

其調用Web 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不叫這就是問題,任何人都親切回信來解決它

回答

2

你這樣做是錯誤的。不要使用任何IHttpModules。在Web API中實現此功能的正確方法是使用自定義media formatter。例如有一個JsonpFormatter,你可以在Application_Start整合,這將使JSONP爲您的Web方法:

var config = GlobalConfiguration.Configuration; 
config.Formatters.Insert(0, new JsonpMediaTypeFormatter()); 
+0

感謝你,非常喜歡我尋找到它。 – MZH

+0

偉大的工作 – MZH