【问题标题】:Multiple references to the same dll in web.config在 web.config 中多次引用同一个 dll
【发布时间】:2015-02-08 15:27:46
【问题描述】:

我有一个使用 Telerik 控件的 Web 应用程序 (asp.net webforms),例如 telerik:ReportViewer 和 telerik:RadTimePicker。

有趣的是,telerik 库广泛使用相同的 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 就会报告重复错误!!

【问题讨论】:

    标签: c# asp.net iis telerik web-config


    【解决方案1】:

    您的网站似乎已从旧的 .NET 版本更新,并且已成为新 .NET 版本不需要的部分的混乱。默认情况下,VS 并没有真正在 IIS 上运行,因此它可能不会读取整个 web.config,因此可以在 dev 上运行。

    那么,你可以尝试的是:

    • 启动一个新的针对 .NET 4 或 .NET 4.5 的空白 WebForms 应用程序,具体取决于您的目标并复制其 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 元素添加到新程序集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 2018-06-12
      • 2013-04-01
      • 2017-04-08
      • 2010-10-20
      • 1970-01-01
      • 2012-02-16
      相关资源
      最近更新 更多