【问题标题】:URL Redirects in ASP.NETASP.NET 中的 URL 重定向
【发布时间】:2010-01-15 06:44:46
【问题描述】:

好的,我想不通的奇怪问题。希望有人可以。我继承了一个使用过度架构的内容管理系统开发的网站。我现在遇到了内置重定向功能的问题。

这是在运行 ASP.NET 3.5 sp 1 的专用 Windows 2003 服务器上。重定向存储在数据库中,我已确认数据库中存在正确的重定向。最后,文件扩展名 .html 已在 IIS 中映射到 ASP.NET ISAPI。并且创建了一个 HttpHandler 来重定向 .html 请求。服务器上的默认文档依次为:

  • default.aspx
  • index.aspx
  • default.asp
  • index.asp
  • default.html
  • index.html

对于这个例子,我们有两个重定向都指向同一个内容页面。 /example/example.html

当请求/example.html 时,它会正确地在数据库中找到合适的重定向并发挥它的魔力。布埃诺。当请求/example 时,它会给出一个 404 页面。它甚至不是 asp.net 黄色 404 通用错误页面。它是标准的普通 IIS 404 响应,因此 asp.net 似乎没有拦截这些请求。

如果需要任何其他信息,请告诉我,我会尽力提供。提前感谢所有伟大的推荐,我相信我肯定会来自社区。

【问题讨论】:

  • 不确定我是否理解。当请求是 /example 时,没有文件扩展名,因此请求不会发送到 ASP.NET,因此您的代码不会运行。该请求仅保留在 IIS 中,当然没有具有该名称的文件,因此您得到 404。或者您是否在问如何让您的代码运行,即使没有文件扩展名?
  • 基本上,是的。我知道当以前的开发人员拥有该站点时,这些重定向是有效的。但我不确定他们如何让 IIS 将这些请求路由到 ASP.NET 运行时。

标签: asp.net redirect


【解决方案1】:

您应该能够映射通配符扩展以通过 ASP.Net ISAPI DLL 是解决方案。

Installing Wildcard Application Mappings (IIS 6.0) 也可能有用。

【讨论】:

  • 是的,我也是这么想的。我不知道这是否会捕获 httphandler。显然,以前的开发人员服务器上的某些东西正在处理它并进行重定向,所以我需要做一些代码探索来找出哪个模块/处理程序正在处理这些特定的请求。
【解决方案2】:

无需重写 CMS,您可以将物理文件放在新目录“/example”中。这将触发 ASP.NET 拦截请求,并希望加载您的页面。

如果您想真正破解它,可以将 IIS 404 页面更改为应用程序中的 .NET 页面,该页面可以处理原始请求并重定向到您真正想要的页面。

【讨论】:

  • 是的,昨晚我这样做是为了满足他们的要求。但最终我需要修复它,以便他们的 CMS 控制它,而无需我手动添加文件和目录。我喜欢你仅仅破解 404 页面的想法,但我厌倦了这样做,因为我可以看到一个永无止境的循环正在等待发生。
【解决方案3】:

是的,这是正确的,因为 /example 没有指向任何文件,而是指向 Web 服务器中的目录。检查您的应用中是否存在 Default.aspx/default.html 或任何其他至少一个。

如果您将 ASP.Net MVC 用于 REST,请检查您的操作是否正确编写。

【讨论】:

  • 嗯,关键是 CMS 框架以前处理过这个问题,不需要文件存在,我需要对其进行故障排除并确定它为什么不再这样做。我想我对此有一个游戏计划。谢谢。
猜你喜欢
  • 2010-12-24
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 2021-03-03
  • 2019-02-17
  • 1970-01-01
相关资源
最近更新 更多