0

在开始之前,我遵循了这里的建议:

获取“WebResource.axd 处理程序必须在配置中注册才能处理此请求。” 错误

我曾使用那里的建议来解决我过去在另一台服务器上运行 MVC 4 应用程序时遇到的类似问题。

我正在尝试将我们的一个网站升级到 .Net 4.0,因为我想将其转换为 MVC 4 应用程序。我正计划*零碎地完成它,并且花了很多时间检查旧的基于表单的网站项目中的所有对象并设置它们,以便它们可以作为一部分在 .Net 4 框架上成功运行混合(暂时)网站。大多数情况下,这涉及将类从 App_Code 文件夹中移出到常规文件夹中,并将它们标记为要复制/编译。

现在我有一个新问题。当我转到尝试调用嵌入式资源的页面时,我收到 WebResource.axd 错误:

The WebResource.axd handler must be registered in the configuration to process this request.

堆栈跟踪:

    [InvalidOperationException: The WebResource.axd handler must be registered in the configuration to process this request.

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <httpHandlers>
            <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
        </httpHandlers>
    </system.web>
</configuration>]
   System.Web.Handlers.AssemblyResourceLoader.GetWebResourceUrlInternal(Assembly assembly, String resourceName, Boolean htmlEncoded, Boolean forSubstitution, IScriptManager scriptManager) +4179118
   System.Web.Handlers.AssemblyResourceLoader.GetWebResourceUrl(Type type, String resourceName, Boolean htmlEncoded, IScriptManager scriptManager) +956
   System.Web.UI.ClientScriptManager.RenderWebFormsScript(HtmlTextWriter writer) +257
   System.Web.UI.Page.RenderWebFormsScript(HtmlTextWriter writer) +86
   System.Web.UI.Page.BeginFormRender(HtmlTextWriter writer, String formUniqueID) +1847
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +95
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +48
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +11423020
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +246
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +11423020
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +246
   System.Web.UI.Page.Render(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +11423020
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5290

LIS 我已经在另一个我从头开始编写的 MVC 4 站点上看到并修复了这个错误。发生这种情况是因为 ColdFusion 也安装在服务器上,并且是托管 ColdFusion 和 .Net 应用程序的 IIS 服务器的一个已知问题。所以我听从了这里的建议:

获取“WebResource.axd 处理程序必须在配置中注册才能处理此请求。” 错误

我将该站点配置为以“经典”模式运行,并且运行良好。

但这一次不同。我尝试将应用程序池设置为“经典”模式。我们的管理员为我设置了这种方式,但后来我遇到了 404/500 错误。然后他们启用了 ISAPI 和 CGI​​,这让我回到了上面的 WebResource.axd 错误,这次是在经典模式下运行时。

所以我尝试了上面链接中的一些其他建议。具体来说,我遵循了这个建议(相同的链接,第二个答案)

为此,请转到 IIS 中的相关站点,双击“IIS”部分下的“处理程序映射”,然后找到名为“AboMapperCustom-XXXXXX”之类的处理程序,路径为“*”。选择条目并单击侧栏中的“删除”。这只会删除您的应用程序的映射,因此不会破坏服务器上任何现有的 CF 站点。

当我请求我们的管理员这样做时,我收到了回复:

“AboMapperCustom-94661 * 处理程序来自父站点,但在各个站点 web.config 中被删除 - 我无法将它们从默认/父站点中删除,因为它确实会破坏 ColdFusion。”

我也尝试过这里的解决方案http://blog.fredrikhaglund.se/blog/2008/08/26/solution-to-webresourceaxd-exception/我在 web.config 中的 httpHandlers 部分看起来像:

<system.web>
   ...
   <httpHandlers>
     <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true" />
     <add path="*/ext.axd" verb="*" type="Ext.Net.ResourceHandler" validate="false" />
     <add path="glimpse.axd" verb="GET,POST" type="Glimpse.Core.Handler" />
   </httpHandlers>

我的问题的很大一部分是我没有对 IIS 服务器的管理员访问权限,所以我不能自己进去解决这个问题。我正在摸索下一步该做什么,似乎我有几个选择:

  1. 设置一个错误处理程序来捕获此错误并重定向到“建设中”页面,直到该页面为新站点重写。这是可能的,但并不理想。
  2. 不知何故,在 Coldfusion 映射之前设置了一个过滤器来挑选 axd 请求(我只是一个模糊的概念,不知道它如何/为什么会在没有进一步研究的情况下工作)。
  3. 提出另一个配置请求,由我们的管理员运行,这可能会解决问题。

有没有人有任何与#3 相关的想法可以解决我的问题?如果没有,我可能会在最终选择选项 1 之前对选项 2 和 3 进行几个小时的研究。解决这个问题的最佳方法可能是什么?

4

1 回答 1

0

我想出了一个解决我的问题的方法。

阅读.Net 4.0 的 ASP.Net 配置设置后

我找到了 httpHandlers部分的删除元素

当我像这样向我的 httpHandlers 添加删除时:

<httpHandlers>
      <remove path="WebResource.axd" verb="GET"/>
      <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true" />

有用!

于 2013-01-11T23:22:06.243 回答