【发布时间】:2024-04-19 01:35:02
【问题描述】:
我正在使用 IHttpHeader 将 403 请求重定向到 404。 这是在 .Net 3.5 Web 窗体和 IIS 6 设置上运行的。
<add verb="*" path="products/" type="RequestCheck.NoAccessHandler, RequestCheck, Version=1.0.0.0, Culture=neutral" />
该站点还运行由另一个部门处理的 CMS 系统,他们的所有文件都在一个营销文件夹下,其中他们还有一个产品文件夹。
目录结构
\Root
\products
\marketing
\products
default.asp
在我意识到这个营销文件夹存在之前(我们在开发中看不到它),以下代码运行良好。
public void ProcessRequest(HttpContext context)
{
context.Response.StatusCode = (int)HttpStatusCode.NotFound;
context.Response.Redirect("~/NotFound.aspx");
}
我们在导航中有一个类似这样的链接
http://mysite/marketing/products
现在当然会重定向到 NotFound.aspx 页面,因为它会转到 products/ 如果直接导航到里面的default.asp,就可以到页面了。
简单的解决方法是更新导航以使用以下网址
http://mysite/marketing/products/default.asp
这不是我们的解决方案,因为他们希望我在代码中处理它。 所以我将我的处理程序更改为以下内容。
public void ProcessRequest(HttpContext context)
{
var url = context.Request.Url.ToString().ToLower();
if (url.Contains("/mtgmktg/")) // ignore any requests coming for the CMS folders
{
return;
}
else // everything else gets a 404
{
context.Response.StatusCode = (int)HttpStatusCode.NotFound;
context.Response.Redirect("~/NotFound.aspx");
}
}
还有这个……
public void ProcessRequest(HttpContext context)
{
var url = context.Request.Url.ToString().ToLower();
if (!url.Contains("/mtgmktg/")) // ignore any requests coming for the CMS folders
{
// everything else gets a 404
context.Response.StatusCode = (int)HttpStatusCode.NotFound;
context.Response.Redirect("~/NotFound.aspx");
}
}
但这两个都只是将我发送到一个空白页面,它不会呈现任何内容。 然后我尝试了这个......
错误代码
public void ProcessRequest(HttpContext context)
{
var url = context.Request.Url.ToString().ToLower();
if (url.Contains("/mtgmktg/")) // ignore any requests coming for the CMS folders
{
context.Response.Redirect(url); // This causes an infinite loop
}
else // everything else gets a 404
{
context.Response.StatusCode = (int)HttpStatusCode.NotFound;
context.Response.Redirect("~/NotFound.aspx");
}
}
现在它只是转到“无法显示此页面”
我也尝试通过配置删除营销文件夹,但只是被忽略了。我尝试在上面添加之前和之后放置它。没有人做任何事情。
<remove verb="*" path="marketing/" />
OR
<remove verb="*" path="marketing/products/" />
还有人有其他想法吗?请记住,我无法更改导航中的链接。
更新 1
空白页是因为我没有注意我做了什么...最后一个代码示例导致无限循环,使页面崩溃。所以我需要回滚到之前导致空白页的样本之一。
【问题讨论】:
标签: c# asp.net iis-6 ihttphandler web-config