【问题标题】:Internal Server Error with httpHandlers section of web.configweb.config 的 httpHandlers 部分出现内部服务器错误
【发布时间】: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>

【问题讨论】:

    标签: asp.net web-config telerik


    【解决方案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”。此外,请确保(使用文件 | 属性)您在服务器上也有正确的版本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 2011-01-09
          • 2019-10-20
          • 2012-03-29
          • 1970-01-01
          相关资源
          最近更新 更多