使用web.config使用查询字符串重定向非现有页面

时间:2011-05-24 18:39:58

标签: c# .net redirect web-config

我正在使用aspx网站,用户可以访问类似于“www.website.com/referralname”或“www.website.com/otherreferralname”的网址,并将重定向到www.website。 com / genericform.aspx?referral = referralname

我不是该网站的原始设计者,我想尽可能少地添加,所以我希望有一种方法可以通过webconfig执行此操作,而不必添加重定向页面和切换案例每个可能的推荐名称。

我已经探讨了使用

的可能性
<customErrors mode="RemoteOnly">
    <error statusCode="404" redirect="~/404.aspx"/>
</customErrors>

但AppCode中已有代码以某种方式覆盖或取代我的代码,无论如何它只显示默认的404页面。非常感谢任何建议。

编辑:我被告知.aspx不能与那里的customErrors标签一起使用,因此这可能是问题的一部分。我也希望澄清这个问题。今天我会学到很多东西!

编辑2:所以在做了一些研究之后,我认为能让我受益的搜索词是“路由”。我发现this MSDN page我认为会引导我解决问题。如果这对我有用,我会在稍后发表评论“回答”。

2 个答案:

答案 0 :(得分:2)

您可以查找IHttpHandler和IHttpHandlerFactory。我在我的维基上使用它们。我的页面以.wiki结尾但不存在,但被重定向到从数据库加载它们的通用页面。您必须有权访问IIS服务器(或调用您的ISP),以便通过您选择的扩展程序获取不存在的文件,然后通过该服务器进行处理。

还有其他方法可以做同样的事情。

PS要使用我的方法,我必须在我的服务器上拥有完全信任才能使其正常工作。我确信这没有必要,但我无法理解。

编辑:

这些是我保存的书签:

Serving Dynamic Content with HTTP Handlers

How To Create an ASP.NET HTTP Handler

答案 1 :(得分:1)

好的,最终最终工作的是将以下代码添加到web.config文件夹的system.web区域

<urlMappings enabled ="true">
    <add url="~/referralname" mappedUrl="~/custom/sign-up.aspx?ref=referralname"/>
</urlMappings>

如此简单,却如此难以捉摸!我希望这有助于其他人!