I know it can definitely be done, I've done it before. I think a good place to start is to see if both colliders are set to isTrigger. I've gotten strange results if I have two colliding objects both having isTrigger = true. If they are, try it with just one set to isTrigger, and see if that gameObject's code is called.
If that works, use the chart at the bottom of the page here: http://bit.ly/1drDFPb
It's for 3D colliders, but in theory it should work for 2D.
If it doesn't work, or you are using only one trigger, you might need to use OnCollisionEnter2d instead. It works a lot like OnTriggerEnter, but if you're trying to trip a trigger where you don't want the object to pass through the trigger, this is probably what you're looking for, but you keep isTrigger = false.
Without seeing what you're trying to do, that's all I can offer at the moment.
Edit: Also, for both 2D and 3D, and both collision and trigger, there's enter, stay, and exit.