Внутренняя ошибка сервера в разделе httpHandlers файла web.config

У меня есть сайт asp.net с использованием элементов управления формы от Telerik. Он просто перешел на новый сервер, но я все равно получаю 500 внутренних ошибок сервера.

Удаление раздела httpHandlers файла web.config приводит к ошибке сервера, хотя тогда он жалуется, что на странице есть элемент управления Telerik. Весь файл конфигурации действителен для XML. Что-то не так с этим кодом?

<httpHandlers>
    <add path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI, Version=2008.2.826.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4" validate="false"/>
</httpHandlers>

Ответы

Ответ 1

Я вижу, вы упомянули, что он только что перешел на новый сервер. Была ли это миграция IIS6 на IIS7 +?

IIS7 использует <system.webServer\handlers> вместо раздела IIS6 <httpHandlers>. Вдобавок к этому он по ошибке выдает ошибку, если у вас есть настройки в старом разделе, даже если новый раздел заполнен правильно.

Попробуйте следующее:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
      <!-- modules go here -->
    </modules>
    <handlers>
      <!-- modules go here -->
      <add name="Telerik.Web.UI.WebResource" path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI, Version=2008.2.826.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4" />
    </handlers>

validateIntegratedModeConfiguration="false" позволит вам сохранить ваш раздел httpHandlers, не забрасывая ошибку (полезно, если вы отлаживаете сервер cassini/iis6), и запись в разделе <handlers> будет настраивать его для вашего сервера IIS7.

runAllManagedModulesForAllRequests="true" не требуется строго, но вам, вероятно, понадобится его, если вы новичок в настройке IIS7:)

Ответ 2

Возможно ли, что на новом сервере работает IIS7?

Затем попробуйте это

<system.webServer>      
 <handlers>
        <add path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI, Version=2008.2.826.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4" validate="false"/>           
 </handlers>
</system.webServer>

Ответ 3

Кроме того, убедитесь, что у вас есть точная версия, указанная в разделе "Обработчики". Вам действительно не нужны параметры Version, Culture и Public Token, указанные в вашем web.config, чтобы он работал. Они там, если вы используете более одной версии в своем приложении. Если они не указаны, сервер будет использовать первый, который будет найден в вашем проекте. Итак, если вы используете только одну версию сборки, вы можете опустить параметры.

Ответ 4

Убедитесь, что у вас есть ссылка Telerik DLL Telerik.Web.UI.dll в вашем проекте и что для параметра CopyLocal установлено значение "true". Кроме того, убедитесь, что (с помощью File | Properties) у вас есть правильная версия на сервере.