Я использовал Mscaptcha на своем сайте. он работал нормально в локальном режиме, но изображение не отображалось на сервере. Почему?

Мой код в web.config:

<system.webServer>
<handlers>
<add name="MSCaptcha" verb="GET" path="CaptchaImage.axd" type="MSCaptcha.CaptchaImageHandler, MSCaptcha"/>
</handlers>
</system.webServer>

В .aspx:

<%@ Register Assembly="MSCaptcha" Namespace="MSCaptcha" TagPrefix="cc1" %>

 <cc1:CaptchaControl ID="CaptchaControl1" runat="server" Height="50px" 
                                    Width="180px" CaptchaLength="5" BackColor="White" 
                                    EnableViewState="False" />

Спасибо.

4
Farzaneh Talebi 19 Дек 2013 в 20:49

2 ответа

Лучший ответ

(размещение комментария)

Рискну предположить - действительно ли ваш сервер работает в интегрированном режиме IIS? В противном случае вы должны использовать system.web/httpHandlers вместо раздела конфигурации system.webServer/handlers.

Поскольку мы теперь подтвердили, что ваш локальный сервер работает в интегрированном режиме, а ваш удаленный сервер работает в классическом режиме, вам следует убедиться, что вы разрабатываете с конфигурацией, максимально приближенной к производственной машине. Это может означать, что вам придется установить и настроить IIS на машине разработки (например, Перевести IIS Express в классический конвейерный режим).

На практике классический и интегрированный режимы могут сильно отличаться, и вы можете столкнуться с множеством проблем на классическом сервере, которых нет на интегрированном, и наоборот.

3
Community 23 Май 2017 в 12:08

У меня была такая же проблема, проблема была вызвана тем, что у .axd не было разрешений. В web.config добавьте эти строки, чтобы разрешить доступ к .axd

<location path="CaptchaImage.axd">
<system.web>
  <authorization>
    <allow users="*" />
  </authorization>
</system.web>
2
William 24 Фев 2014 в 13:30