Что ж, если один из содержащихся объектов помечен как не сериализуемый, я полагаю, что вам «не повезло» с использованием сериализатора по умолчанию.
Если возможно, я бы рекомендовал вместо этого взять параметры, используемые для создания экземпляра вашего веб-запроса, и вместо этого их сериализовать.
Напишите пользовательский сериализатор / десериализатор для восстановления неработающего объекта.
РЕДАКТИРОВАТЬ: Есть довольно хорошая статья об этом здесь .
EDIT2: На самом деле, после небольшого поиска в Google, кажется, что это ваш единственный вариант, поскольку атрибут Serializable в HttpWebRequest был помечен как устаревший с .net 2.0. Подробнее см. здесь (поиск по HttpWebRequest).