There are several reasons it may not fire:
1. The ServerValidate event is not attached to your event handler method.
2. The control is Enabled=false or Visible=false
3. The control is contained in another control whose Visible property is false.
4. The validation group feature is being used. The validation group name on the button differs from the value in the Validator. (This is a common source of the problem)
5. If the textbox is blank, it will not fire unless ValidateEmptyText is true.
6. The button submitting the page has CausesValidation=false. This will prevent all validators from being evaluated on the server side unless you explicitly call Page.Validate()