如何返回与服务器上的asp页面名称不同的经典asp页面

时间:2010-01-06 13:04:29

标签: web-applications asp-classic

是否可以向Web客户端返回一个名称与从Web服务器文件夹中读取的原始经典asp页面不同的页面?

F.i。我想要实现一个真实的例子:假设我有一个名为

的经典asp
calendar.asp

如果今天(2010年1月6日)调用此页面,则返回客户端网站的页面应为:

calendar-of-january-6-2010.asp

如果明天应该调用同一页面,则返回客户端网站的页面应为:

calendar-of-january-7-2010.asp

你得到了照片。基于一些内部逻辑,将特定的命名经典asp页面返回给Web客户端。

感谢您提供的任何输入。

更新:以上示例中的特定日期文件在物理上不存在(或者我可以使用重定向)。 我希望找到像我用来返回csv文件的东西:

Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment; filename=export.csv"

当然不一样,因为这会让客户端看到提示/打开框。只是类似的东西。

3 个答案:

答案 0 :(得分:2)

好的,看到你想要链接到每日日历的编辑。

这样想:

  1. 构建您的网页,以便链接指向友好的网址 - /calendars/jan-01-2010.asp,/calendars/jan-02-2010.asp,依此类推。
  2. 配置IIS以使用/ calendars /的自定义404错误 - 这样每当客户端请求此处不存在的页面时,您的服务器将运行calendar.asp(而不是仅发回“404 Page Not Found”) )
  3. 就是这样。您的客户端永远不会看到URL“calendar.asp”,因为他们从不请求它。他们所做的只是遵循你给他们的友好链接。这是你的服务器正在做一个聪明的位(捕获“无效”请求,并假装在该URL实际上有一个有效的页面)
  4. StackOverflow就是这样的 - 它使用ASP.NET MVC和ASP.NET路由引擎截取那些看起来很友好的问题URL,在数据库中查找它们,并返回一个生成的页面,以便用户(和搜索)看起来有几千个友好命名的页面,当它实际上都发生在幕后。

答案 1 :(得分:0)

您可以编写自定义ISAPI筛选器(C ++)来控制将哪个物理文件映射到URL。您需要管理员访问IIS框以安装此过滤器,如果您确实希望自定义URL具有.asp扩展名,则过滤器需要适应此目的(因为ISAPI过滤器主要是基于IIS的扩展选择的) 。查看thisthis MSDN链接。 This codeproject sample包含更多指针(它将.chm重新映射为.asp文件,易于遵循)。

答案 2 :(得分:0)

  1. 您只需从calendar.asp重定向到新页面即可。当用户请求此新页面使用URL重写以在内部重写回calendar.asp时。

  2. 不太好 - 在第一次请求calendar.asp生成实际页面(带日期的页面)时(不要忘记在24小时内删除它)并重定向到此页面。