So, you've checked over your web.config a million times and you think ajax should be working but it's not?    Here's one that you probably won't see mentioned a lot in the forums out there.  But maybe, over time, this post will get picked up in google and I'll have saved you the hour I just spent on it..

Anyway... Consider that maybe, just maybe, your custom URL rewriter HTTP Module you made is trying to rewrite your scriptresource.axd or webresource.axd.  Try taking your HTTP Modules out and see if ajax works.  If it does, than that's the problem.  How to fix?  Just put something like this at the beginning of your rewriter:

If Request.RawUrl.ToLower.Contains("scriptresource.axd") Or Request.RawUrl.ToLower.Contains("webresource.axd") Then
Exit Sub
End If

 

Exit Sub baby.   Exit Sub.