Probably, the string you are passing does not match that exact format: it may have the year first, or the '/' may be replaced with '-', or it may include leading zeros, or the month may be "APR" or "Oct"
Why are you using Invariant Culture on an international system such as the internet? Surely it would be better to use the Client culture?
Thread.CurrentThread.CurrentCulture = new CultureInfo(Request.UserLanguages[1]);
And then parse the date with a straight DateTime.TryParse?