#.net #asp.net #visual-studio-2010
#.net #asp.net #visual-studio-2010
Вопрос:
У меня есть проект веб-приложения, который я недавно преобразовал из VS2008 в VS2010, он не использует .Net 4.0 (вместо 3.5), но всякий раз, когда я открываю разметку на странице или элементе управления, он отображает следующую ошибку и впоследствии отключает intellisense:
http://www.kompeller.co.uk/images/vs2010_error.png
Строка 12 в моем 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>
Приложение настроено для запуска из IIS на моем компьютере, и у него нет родительских веб-сайтов, поэтому оно не наследуется от другого web.config.
Я повсюду искал решение, это сводит меня с ума!
Спасибо
Комментарии:
1. Из моего чтения эта строка, которую вы процитировали, будет дублирующей строкой. Есть ли system.web.extensions, определенный где-то до этого?
2. Нет, над этим нет дубликата, только 2 других раздела, совершенно не связанных. Похоже, это влияет на все мои проекты.
Ответ №1:
Проблема может быть не совсем в строке 12. В ошибке очень четко указано, что System.Web.Extensions
это определено дважды в web.config, хотя. Просто найдите все экземпляры System.Web.Extensions
и удалите дубликат.
Проверьте assemblies
раздел и убедитесь, что дубликатов нет:
<compilation debug="true">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
Проверьте pages/controls
раздел и убедитесь, что дубликатов нет:
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
...
Проверьте httpHandlers
раздел:
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
...
Комментарии:
1. Я сделал это, и в этих разделах нет дубликатов. Интересно то, что это начало происходить только после того, как я перешел на 2010, и я сравнил версии в системе управления версиями, и существенных изменений не было.
2. Ваш ответ побудил меня найти другие случаи, смотрите Мой ответ ниже, спасибо!
3. Я сказал вам искать любые экземпляры System.Web.Extensions и заменять дубликат…
4. Не уверен, что я понял, замените дубликат чем?
5. Извините, я хотел сказать «удалить дубликат».
Ответ №2:
Хорошо, я, наконец, отследил это, основываясь на предположении Джеймса о том, что дубликат может отсутствовать в этой строке, это была неправильная конфигурация:
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="1.0.0.0-3.5.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="1.0.0.0-3.5.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
Я удалил это, и все хорошо!