У меня была та же проблема, и в конце концов я понял, что проблема с установкой типа контента как "json" ...
contentType: "application/json; charset=utf-8"
Это строка, которую некоторые популярные учебники предлагают вам добавить в вызов $ ajax, и она хорошо работает с ASPx WebServices, но по некоторым причинам это не подходит для HttpHandler, использующего POST.
Трудно поймать, поскольку значения в строке запроса работают нормально (еще один метод, встречающийся в Интернете, хотя для этого нет особого смысла использовать POST).