Данная статья не поясняет как написать самому капчу. Ручное создание капчи не требует особых умений и знаний, однако гораздо проще воспользоваться готовой библиотекой, расположенной на официальном сайте.
На том же сайте есть все пояснения по установке и использованию капчи. И вроде бы все просто и понятно, но есть некоторые проблемы, возникающие при перенесении страницы с капчей на хостинг.
Для начала немного слов об установке данного контрола.
Скачайте с официального сайта архив, распакуйте его содержимое в папку bin вашего сайта. Теперь добавьте ссылку на MSCaptcha.dll


Нажимаем кнопку "OK".
Так, библиотека есть, ссылка на сборку есть, осталось добавить директиву.
На старнице, где размещается капча вверху страницы помещаем строку:
<%@ Register Assembly="MSCaptcha" Namespace="MSCaptcha"
TagPrefix="msCaptcha" %>
Далее, добавляем контрол MSCaptcha на вкладку панели инструментов:


В итоге в разделе General панели инструментов у вас появится элемент CaptchaControl.
Самая сложная работа позади :).
Теперь перетащите в нужное место разметки страницы данный элемент. Для него сгенерируется похожий код:
<msCaptcha:CaptchaControl ID="Captcha" runat="server"
CaptchaBackgroundNoise="Low" CaptchaLength="5"
CaptchaHeight="40" CaptchaWidth="140"
CaptchaLineNoise="Medium" CaptchaMinTimeout="0"
CaptchaMaxTimeout="240" />
Естественно сама по себе капча не имеет смысла, если нет текстового поля, которое требует подтверждения ввода капчи. Поэтому где то рядом вставляем TextBox:
<asp:TextBox CssClass="TextBox" ID="noRobot"
runat="server"&ngt</asp:TextBox>
Ну и кнопку отправки:
<asp:ImageButton ID="MyButtond" runat="server"
onclick="MyButtond _Click" />
В обработчике события MyButtond _Click выполняем следующую проверку:
Captcha.ValidateCaptcha(filterRobot.Text.Trim());
if(!Captcha.UserValidated)
{
//сообщение о не принятии капчи
return;
}
Дальше на официальном сайте говорится, что для поддержания функциональности капчи необходимо изменить файл web.config.
Действительно, обязательно следует в раздел <httpHandlers> добавить пункт описания нашей капчи:
<httpHandlers>
...
<add verb="GET" path="CaptchaImage.axd"
type="MSCaptcha.CaptchaImageHandler, MSCaptcha"
preCondition="integratedMode,runtimeVersionv2.0"/>
</httpHandlers>
Вот с этого места предполагается, что капча будет работать. И действительно, на локалке практически всегда работа капчи будет безупречной.
Но вот многие, попытавшиеся перенести готовую страницу с капчей на хостинг обнаруживали, что капча отказывается работать. Однозначно назвать причину нельзя потому, как их может быть несколько, начиная от настроек и версии IIS, и заканчивая платформой сервера.
Но, почти всегда добиться работы MSCaptcha можно еще немного изменив конфигурационный файл приложения.
Опять лезем в web.config и теперь уже в разделе <handlers> регистрируем нашу капчу:
<handlers>
...
<add verb="GET" name="MSCaptcha" path="CaptchaImage.axd"
type="MSCaptcha.CaptchaImageHandler, MSCaptcha"
preCondition="integratedMode,runtimeVersionv2.0"/>
</handlers>
Все, наслаждаемся работой автоматической капчи.
О том, как настраивать капчу писать не буду, об этом достаточно описано на официальном сайте.