Ошибка компиляции Ajax Control Toolkit ASP.NET

Я добавил AjaxControlToolkit версии 7.1213 из nuget, и у меня есть vs 2012 с .net 4.5. Я пытаюсь использовать calenderextender на своем веб-сайте следующим образом

<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</ajaxToolkit:ToolkitScriptManager>
<asp:TextBox ID="birthtxt" runat="server" Style="width: 95%;" />
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server"></ajaxToolkit:CalendarExtender>

при попытке отладки проекта возникли следующие ошибки:

Error   1   The type 'System.Web.UI.ScriptManager' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.


Error   2   The type 'System.Web.UI.ExtenderControl' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

а это сборки мои Web.config

<assemblies>
        <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>

а это controls в web.config

   <pages>
      <controls>
        <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
      </controls>
    </pages>

а целевая работа фрейма 3.5 любая идея ???


person Feras Salim    schedule 18.12.2013    source источник
comment
Вы добавили dll управления ajax в свою папку bin?   -  person coder    schedule 19.12.2013


Ответы (3)


Спасибо всем за вашу помощь. проблема решается добавлением к тегу соответствия в web.config атрибута targetframework, подобного этому

<compilation debug="true" targetFramework="4.5">
person Feras Salim    schedule 21.01.2014

Похоже, вы не добавили сборку AjaxControlToolkit в раздел Assemblies. Не могли бы вы попробовать добавить его, а затем повторно протестировать?

РЕДАКТИРОВАТЬ: чтобы получить PublicKeyToken, откройте командную строку Visual Studio, перейдите в каталог, в котором находится ваша DLL, а затем введите команду ниже:

sn -Tp AjaxControlToolkit.dll
person shree.pat18    schedule 18.12.2013
comment
как получить токен открытого ключа ?? - person Feras Salim; 18.12.2013
comment
Я попробовал это и получил эту версию 4.0.30319.17929 утилиты строгого имени Microsoft (R) .NET Framework. Copyright (c) Microsoft Corporation. Все права защищены. Не удалось преобразовать ключ в токен - недопустимый открытый ключ сборки. - person Feras Salim; 18.12.2013
comment
Вы использовали Tp с большой буквы? Флаг чувствителен к регистру, поэтому, если вы используете строчные буквы t, вы получите эту проблему. - person shree.pat18; 18.12.2013
comment
Я сделал все, что вы сказали, и получил это при повторном тестировании. Следующая сборка зависит от версии .NET Framework, которая выше целевой и может некорректно загружаться во время выполнения, вызывая сбой: HtmlAgilityPack, Version = 1.4.6.0, Culture = нейтральный, PublicKeyToken = bd319b19eaf3b43a. Зависимости: mscorlib, Версия = 4.0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089; System.Xml, версия = 4.0.0.0, культура = нейтральный, PublicKeyToken = b77a5c561934e089; Система, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089. - person Feras Salim; 18.12.2013

Если я не ошибаюсь, это может быть ваша проблема, уберите строку ниже из файла web.config

<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />

и поместите это вверху вашей исходной страницы, и не забудьте поместить свой префикс тега последним, что означает после объявления пространства имен.

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>

и измените это на исходной странице, потому что нет связи между ajaxtoolkit и текстовым полем. Для этого вы должны использовать TargetControlID.

<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="birthtxt">
    </ajaxToolkit:CalendarExtender>

ОБНОВЛЕНИЕ

измените свой файл webconfig как,

<pages>
<controls>

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions,Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" 
        tagPrefix="ajaxToolkit"/>
</controls>
</pages>
person gkrishy    schedule 18.12.2013
comment
Сообщите мне результат. @ FerasSalim - person gkrishy; 18.12.2013
comment
Поместите TargetControlID в расширитель календаря ajaxtoolkit вместо диспетчера toolkitscript. - person gkrishy; 19.12.2013