2015-02-08 2 views
0

У меня есть веб-приложение (веб-формы asp.net), которое использует элементы управления telerik, такие как telerik: ReportViewer и telerik: RadTimePicker.Несколько ссылок на одну и ту же DLL в web.config

Интересной частью является то, что библиотека telerik широко использует ту же самую DLL (например, System.Web.Extensions), заставляя диспетчер IIS выдавать ошибку «Duplicate Reference». Попытка просто удалить дубликаты ссылок заставляет некоторые части сайта перестать работать.

Как я могу делать одинаковые ссылки на одну DLL в пределах Web.config, не добавляя дубликатов?

Посмотрите, почему:

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
       <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
       <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
        <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> 
        <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
        <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
        <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
       </sectionGroup> 
      </sectionGroup> 
     </sectionGroup> 
    </configSections> 

отчеты IIS дублировать ссылки для каждого элемента section выше. При удалении их выборщик времени не будет отображаться при нажатии.

Те же ссылки идет в других местах:

<compilation debug="true"> 
      <assemblies> 
       ... 
       <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       ... 
       <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       ... 
     </compilation> 

А также:

<httpModules> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</httpModules> 

<modules> 
    <remove name="ScriptModule"/> 
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</modules> 

При работе с использованием Visual Studio (отладка), все в порядке. Но после развертывания в IIS IIS сообщает об ошибках дубликатов!

ответ

1

Кажется, ваш сайт обновлен со старых версий .NET и стал беспорядком секций, для которых более новые версии .NET не нужны. VS по умолчанию не работает по IIS, поэтому он, вероятно, не читает весь web.config, следовательно, все работает на dev.

Итак, что вы можете попробовать это:

  • начать новое приложение пустого WebForms ориентируется .NET 4 или .NET 4.5, в зависимости от того, что вы цели и скопировать его web.config. Вам нужно убедиться, что вы можете запустить MS AJAX правильно, поэтому простой asp: UpdatePanel на странице должен сначала иметь рабочую страницу. Это включает в себя обеспечение того, чтобы все запросы webresource проходили.

  • посмотреть, что вам нужно добавить для элементов управления Telerik: http://www.telerik.com/help/aspnet-ajax/web-config-settings-overview.html#mandatory-additions. Это всего лишь несколько обработчиков, те разделы, которые выходят из строя, используются базовой функциональностью MS AJAX.

  • попытаться добавить bindingRedirect элемент для старого Web.Extensions в сборе к новому.

Смежные вопросы