aspxerrorpath NULL在IIS 6上

时间:2009-08-12 03:01:58

标签: asp.net iis iis-6 url-rewriting

我正在尝试基于404进行URL重写。我的逻辑检查“aspxerrorpath”,但它总是显示为null。我的代码在开发服务器上完美运行。我打开了客户端。我还在IIS控制面板中指向我的处理程序的客户端错误。关于它为什么没有通过404网址的想法???

public class UrlHandler : Handler301
{
    protected override string getRedirectionUri()
    {
        HttpContext.Current.Response.ContentType = "text/plain";

        String request = HttpContext.Current.Request.QueryString["aspxerrorpath"];
        if (request != null)
        {
            SomeUrl url = getUrlLogic();

            if (url != null)
            {
                return url.ReferencedUrl;
            }
            else
            {
                return ConfigurationManager.AppSettings["404RedirectionUri"];
            }
        }
        else
        {
            String site = HttpContext.Current.Request.Url.AbsoluteUri;

            return site.Substring(0, site.LastIndexOf('/'));
        }
    }
}

1 个答案:

答案 0 :(得分:0)

结果是IIS的查询字符串与开发服务器不同:

String request = HttpContext.Current.Request.QueryString["aspxerrorpath"];

if (StringUtils.isNullOrEmpty(request))
{
    String rawUrl = HttpContext.Current.Request.RawUrl;

    if (rawUrl.Contains("?404"))
    {
        request = rawUrl.Substring(rawUrl.LastIndexOf('/'));
    }
}

它使用 ?404 查询字符串,而不是ASP.NET的 ?aspxerrorpath 查询字符串开发服务器使用。