web.config 的 httpHandlers 部分出现内部服务器错误

Posted

技术标签:

【中文标题】web.config 的 httpHandlers 部分出现内部服务器错误【英文标题】:Internal Server Error with httpHandlers section of web.config 【发布时间】:2011-11-12 22:58:03 【问题描述】:

我有一个使用 Telerik 表单控件的 asp.net 网站。它刚刚移动到新服务器,但我不断收到 500 内部服务器错误。

删除 web.config 的 httpHandlers 部分会使服务器错误消失,但如果页面上有 Telerik 控件,它会抱怨。整个配置文件是有效的 XML。这段代码有什么问题吗?

<httpHandlers>
    <add path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI, Version=2008.2.826.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4" validate="false"/>
</httpHandlers>

【问题讨论】:

【参考方案1】:

我看到您提到它刚刚移至新服务器。这是 IIS6 到 IIS7+ 的迁移吗?

IIS7 使用 &lt;system.webServer\handlers&gt; 而不是 IIS6 &lt;httpHandlers&gt; 部分。最重要的是,如果您在旧部分中有设置,即使新部分已正确填充,默认情况下也会引发错误。

试试这个:

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true" />
          <!-- modules here -->
        </modules>
        <handlers>
          <!-- modules here -->
          <add name="Telerik.Web.UI.WebResource" path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI, Version=2008.2.826.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4" />
        </handlers>
   </system.webServer>

validateIntegratedModeConfiguration="false" 将允许您在不引发错误的情况下保持 httpHandlers 部分的填充(如果您在 cassini / iis6 服务器上调试很有用),&lt;handlers&gt; 部分中的条目将为您的 IIS7 服务器配置它。

runAllManagedModulesForAllRequests="true" 不是必需的,但如果您是配置 IIS7 的新手,您可能会发现自己需要它:)

【讨论】:

哪些元素位于哪些部分?目前我有一个&lt;system.web&gt;,其中包含 sessionState、httpHandlers、roleManager、membership、pages、customErrors、身份验证和编译作为子元素。我只需要将 system.web 更改为 system.webServerhttpHandlers 更改为 handlers 吗?以上哪些算模块? 没关系,我想我想通了。我刚刚创建了一个新的 system.webServer 部分,其中包含您的代码,并保留了旧的 system.web 原样。 是的,没错。如果你想看一个例子,那么你应该在 Visual Studio 2010 中创建一个新项目,它会有 system.webServer 部分供你复制。 不知道 httphandler 的 b/w IIS 版本差异。谢谢,这个建议奏效了。【参考方案2】:

新服务器是否可能运行 IIS7?

那就试试这个

<system.webServer>      
 <handlers>
        <add path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI, Version=2008.2.826.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4" validate="false"/>           
 </handlers>
</system.webServer>

【讨论】:

【参考方案3】:

此外,请确保您拥有在“处理程序”部分中指定的确切版本。您实际上并不需要在 web.config 中指定版本、文化和公共令牌参数才能使其工作。它们在那里以防您在应用程序中使用多个版本。如果不指定它们,服务器将使用它在您的项目中找到的第一个引用。因此,如果您只使用一个版本的程序集,则可以省略参数。

【讨论】:

【参考方案4】:

确保您的项目中引用了 Telerik DLL Telerik.Web.UI.dll,并且 CopyLocal 设置为“true”。此外,请确保(使用文件 | 属性)您在服务器上也有正确的版本。

【讨论】:

以上是关于web.config 的 httpHandlers 部分出现内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

asp.net web.Config 配置httpHandlers无效 求解,在线等!

IIS7.0集成模式和经典模式下,web.config中handlers和httpHandlers的区别以及用法。可加分。

Web.config配置ActiveReports

IIS6/7 配置操作

#.NET EF中HttpModule与HttpHandler对象的基本使用

#.NET EF中HttpModule与HttpHandler对象的基本使用