Когда вы говорите «localhost», вы имеете в виду веб-сервер разработки Cassini, используемый при отладке в VS, верно?
Сервер, на который вы развертываете, - это IIS6? По умолчанию он перехватывает 400 и отправляет свой собственный ответ. Я не уверен, что есть способ, которым вы можете помешать этому (вы можете обойтись с MetaBase, но я не уверен). Вы можете указать URL на своем сайте для страницы, которую вы хотите выполнить при отправке этого кода.
Тем не менее, почему вы используете 400, а не просто выбрасываете исключение? 400 немного злоупотребляется протоколами, такими как SOAP, что расширяет смысл неправильно сформированного HTTP-запроса в приложении, но это граница, поскольку SOAP также является конвертом передачи.
Однако мне кажется странным иметь приложение, принявшее запрос на отправку ответа 400, обычно вместо этого вы отправляете вариант 500.