Внутренняя ошибка сервера с разделом httpHandlers в web.config - PullRequest
17 голосов
/ 08 сентября 2011

У меня есть сайт 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>

Ответы [ 4 ]

39 голосов
/ 08 сентября 2011

Я вижу, вы упомянули, что он только что перешел на новый сервер. Была ли это миграция с 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 голосов
/ 08 сентября 2011

Возможно, новый сервер работает под управлением 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>
2 голосов
/ 08 сентября 2011

Также убедитесь, что у вас есть точная версия, указанная в разделе «Обработчики».Вам на самом деле не нужны параметры Version, Culture и Public Token, указанные в вашем web.config, чтобы он работал.Они там, если вы используете более одной версии в вашем приложении.Без их указания сервер будет использовать первое, на которое он найдет ссылку в вашем проекте.Таким образом, если вы используете только одну версию сборки, вы можете опустить параметры.

0 голосов
/ 08 сентября 2011

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

...