我正在 aspx 网站上工作,用户可以访问类似于“www.website.com/referralname”或“www.website.com/otherreferralname”的 url,并将被重定向到 www.website。 com/genericform.aspx?referral=referralname
我不是该站点的原始设计者,我希望尽可能少地添加内容,所以我希望有一种方法可以通过 webconfig 来完成此操作,而不必添加重定向页面和切换大小写每个可能的 referralname。
我探索了使用的可能性
<customErrors mode="RemoteOnly">
<error statusCode="404" redirect="~/404.aspx"/>
</customErrors>
但是 AppCode 中已经有代码以某种方式覆盖或取代了我的代码,无论如何它只显示默认的 404 页面。非常感谢任何建议。
编辑:我被告知 .aspx 不能与那里的 customErrors 标记一起使用,所以这可能是问题的一部分。我也希望能就该问题进行澄清。我今天会学到很多东西!
编辑 2:所以在做了更多研究之后,我认为对我有利的搜索词是“路由”。我找到了 this MSDN page我认为这将引导我找到我的解决方案。如果这对我有用,我稍后会发表带有“答案”的评论。
最佳答案
您可以查找 IHttpHandler 和 IHttpHandlerFactory。我在我的维基上使用它们。我有以 .wiki 结尾且不存在的页面,但被重定向到从数据库加载它们的通用页面。您必须有权访问 IIS 服务器(或调用您的 ISP)才能通过您选择的扩展名获取不存在的文件,这些文件仍会传递给 Asp.Net 软件以供其处理。
还有其他方法可以做同样的事情。
PS 要使用我的方法,我必须在我的服务器上拥有完全信任才能使其正常工作。我确信这不是必需的,但我想不通。
编辑:
这些是我保存的书签:
关于c# - 使用 web.config 使用查询字符串重定向不存在的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115208/