使用Handler执行server.transfer的子请求时出错

时间:2012-03-09 04:56:37

标签: c# asp.net httphandler

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

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-category-1.html 但当我尝试打开像'/JS/TinyMCE/imagemanager/index.html'的页面时 它抛出错误“执行/JS/TinyMCE/imagemanager/index.html的子请求时出错”

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

来自microsoft:

Microsoft Internet信息服务(IIS)根据请求文件的扩展名将Server.Transfer或Server.Execute请求分派到相应的Internet服务器应用程序编程接口(ISAPI)扩展。例如,将.aspx页面的请求分派给Aspnet_isapi.dll ISAPI扩展。

将请求分派到适当的ISAPI扩展后,ISAPI扩展无法调用另一个ISAPI扩展。您收到错误消息“执行PageName.asp的子请求时出错”,因为处理ASP.NET页面请求的Aspnet_isapi.dll文件无法将请求转发到处理ASP页面请求的Asp.dll文件。 / p>

你的haldler正在制造问题,

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

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

答案 1 :(得分:0)

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

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