Проблема с обработчиками HTTP и IIS7 - PullRequest
3 голосов
/ 15 января 2011

Я разрабатывал собственный обработчик HTTP.Используя новый раздел web.config <httphandlers> для ASP.NET 4.0 и IIS7, это прекрасно работает на моей машине для разработки.

Однако, когда я загружаю код в свою учетную запись общего хостинга, я получаю 500Ошибка сервера.Я позвонил в свою хостинговую компанию, и они сказали, что сервер сообщает об ошибке при обнаружении параметра web.config, который не относится к интегрированному режиму конвейера.

Когда он переключил IIS с интегрированного в классический режим, домашняя страницазатем загружается нормально, но все мои перенаправленные страницы сообщают об ошибке сервера 403.

Я почти уверен, что мне нужен интегрированный режим для работы секции <httphandlers>, но я определенно не парень IIS / admin,Кто-нибудь имеет какие-либо идеи, в чем может быть проблема или что я могу попробовать дальше?

РЕДАКТИРОВАТЬ: Основная часть моего обновленного web.config:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>
        [...]
    </connectionStrings>
    <appSettings>
        [...]
    </appSettings>
    <system.web>
        <httpHandlers>
            <add verb="*" path="*.zip" type="BlackBelt.ZipHttpHandler"/>
        </httpHandlers>
        <compilation debug="false" targetFramework="4.0"/>
    </system.web>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        <handlers>
            <add verb="*" path="BlackBelt.ZipHttpHandler" name="BlackBelt.ZipHttpHandler" type="BlackBelt.ZipHttpHandler"/>
        </handlers>
        <!-- Redirect domain.com to www.domain.com -->
        <rewrite>
            <rules>
                <clear/>
                <rule name="WWW Rewrite" enabled="true">
                    <match url="(.*)"/>
                    <conditions>
                        <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9]+)$"/>
                    </conditions>
                    <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent"/>
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

1 Ответ

6 голосов
/ 18 января 2011

Благодаря Паули я смог понять это. Хотя <system.web><httpHandlers> - это раздел, который я должен изменить, чтобы он работал при запуске из Visual Studio, <system.webServer><handlers> - это раздел, который я должен изменить, чтобы заставить его работать при работе на сервере, на котором работает IIS7.

Я получил письмо с вопросом, как именно я решил эту проблему. Я написал статью, которая описывает точные шаги и представляет мой код. Если кто-то хочет посмотреть эту статью, она доступна на http://www.blackbeltcoder.com/Articles/asp/writing-a-custom-http-handler-in-asp-net.

...