执行服务器的子请求时出错.使用处理程序进行传输

本文关键字:处理 程序 传输 出错 服务器 请求 执行 | 更新日期: 2023-09-27 18:27:09

我已经创建了处理程序来处理我的asp.net c#web应用程序中的.html页面。我也使用url重写的概念
当任何html请求到达服务器/网站时,处理程序都能正常工作。编码细节如下:

web.config处理程序代码:

<add verb="*" path="*.html," validate="false" type="MyProject.ContentHandler,MyProject" />

ContentHandler.cs代码:

public void ProcessRequest(HttpContext context)
{
            string strMapPage = string.Empty;
            if (context.Request.Url.ToString().Contains("category"))
            {
                strMapPage = "/Links.aspx?ID=" + ProducID;
            }
            else
            {
                strMapPage = context.Request.Url.ToString();
            }
            context.Server.Transfer(strMapPage);
}

此方法适用于任何类似于此页面的.html请求http://localhost:9111/user-类别-1.html但当我尝试打开像"/JS/TinyMCE/imagemanager/index.html"这样的页面时
它抛出错误"执行/JS/TinyMCE/imagemanager/index.html的子请求时出错"

如何解决这个问题?

执行服务器的子请求时出错.使用处理程序进行传输

来自微软:

Microsoft Internet Information Services(IIS)根据请求文件的扩展名,将Server.Transfer或Server.Execute请求分派到相应的Internet Server应用程序编程接口(ISAPI)扩展名。例如,对.aspx页面的请求被发送到Aspnet_isapi.dll isapi扩展。

将请求发送到适当的ISAPI扩展后,ISAPI扩展无法调用另一个ISAPI扩展。您收到错误消息"执行PageName.asp的子请求时出错",因为处理对asp.NET页面的请求的Aspnet_isapi.dll文件无法将请求转发到处理对asp页面请求的asp.dll文件。

,你的haldler正在制造问题

试试这个:这是由另一个应用程序添加的自定义HTTP处理程序引起的,该应用程序很可能在您的网站根目录中运行。若要解决此问题,请修改web.config文件。添加后:

<httpHandlers>
<clear />
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" /> 
</httpHandlers>

我在web.config中添加了处理程序,它解决了这个问题。

<add name="tinyMceIndexHandler" verb="*" path="/js/tiny_mce/plugins/imagemanager/pages/im/index.html" type="System.Web.StaticFileHandler" />