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 使用 <system.webServer\handlers>
而不是 IIS6 <httpHandlers>
部分。最重要的是,如果您在旧部分中有设置,即使新部分已正确填充,默认情况下也会引发错误。
试试这个:
<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 服务器上调试很有用),<handlers>
部分中的条目将为您的 IIS7 服务器配置它。
runAllManagedModulesForAllRequests="true"
不是必需的,但如果您是配置 IIS7 的新手,您可能会发现自己需要它:)
【讨论】:
哪些元素位于哪些部分?目前我有一个<system.web>
,其中包含 sessionState、httpHandlers、roleManager、membership、pages、customErrors、身份验证和编译作为子元素。我只需要将 system.web
更改为 system.webServer
和 httpHandlers
更改为 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的区别以及用法。可加分。