我正在尝试基于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('/'));
}
}
}
答案 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 查询字符串开发服务器使用。