簡體   English   中英

web.config中對同一dll的多個引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM