[英]Multiple references to the same dll in web.config
我有一個使用Telerik控件(例如telerik:ReportViewer和telerik:RadTimePicker)的Web應用程序(asp.net Webforms)。
有趣的是,telerrik庫廣泛使用相同的dll(例如System.Web.Extensions),從而導致IIS管理器發出“重復引用”錯誤。 嘗試簡單地刪除重復的引用會導致網站的某些部分停止工作。
如何在Web.config
對單個DLL進行相同的引用,而不必添加重復項?
看為什么:
<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就會報告重復錯誤!!
您的網站似乎已從舊的.NET版本進行了更新,並變成了新的.NET版本不需要的部分內容。 默認情況下,VS並不是真正在IIS上運行,因此它可能無法讀取整個web.config,因此可以在dev上運行。
因此,您可以嘗試的是:
啟動一個新的空白WebForms應用程序,目標是.NET 4或.NET 4.5,具體取決於您要定位的目標並復制其web.config。 您需要確保可以正確運行MS AJAX,因此頁面上的簡單asp:UpdatePanel應該讓您首先擁有一個工作頁面。 這包括確保所有網絡資源請求均通過。
在此處查看需要添加Telerik控件的內容: http : //www.telerik.com/help/aspnet-ajax/web-config-settings-overview.html#mandatory-additions 。 只是一些處理程序,那些出錯的部分由核心MS AJAX功能使用。
嘗試將舊的Web.Extensions程序集的bindingRedirect元素添加到新的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.