【问题标题】:route.MapPageRoute to a page with an extensionroute.MapPageRoute 到带有扩展名的页面
【发布时间】:2012-10-05 05:50:52
【问题描述】:

在我的网站项目(不是 MVC,不是 Web 应用程序)的 global.asax 中,MapPageRoute 不允许我映射到带有扩展名的页面。

例如:

routes.MapPageRoute("GetMobilePassForAttendee", "Pass/Attendee/{attendeeId}", "~/GetMobilePass.aspx");

按预期工作,但是

routes.MapPageRoute("GetMobilePassForAttendee", "Pass/Attendee/{attendeeId}/pass.pkpass", "~/GetMobilePass.aspx");

返回 404。

有人知道为什么吗?

也许我应该使用 URL 重写,但我读过的所有材料都建议我改用路由。

【问题讨论】:

  • 你解决过这个问题吗?我有同样的问题。这有效:/FederationMetadata/2007-06/FederationMetadata.xml/ 但这不起作用:/FederationMetadata/2007-06/FederationMetadata.xml,因为扩展名没有结束斜杠。
  • 我实际上没有。我最终不需要它。你是怎么去的?如果您有解决方案,请将其发布,我会将其标记为正确。

标签: c# asp.net c#-4.0 url-routing


【解决方案1】:

你有没有单独测试过“pass.pkpass”页面,假设attendeeid=1,看看Pass/Attendee/1/pass.pkpass是不是没有路由的工作页面?

因为如果这是一个工作页面,.NET 路由在这种情况下将不起作用。它将跳过路由并加载实际的“Pass/Attendee/1/pass.pkpass”页面。

【讨论】:

  • 啊,我明白你的意思了。我可以确认 pass.pkpass 不存在。无论我输入什么,我实际上都会得到一个 404,只要期间存在(即延期)。所以,如果我输入 Pass/this_file_doesnt_exist.html,我仍然会得到 404。感谢您的评论!
【解决方案2】:

这对我有用:

routes.MapPageRoute("FederationMetadataRoute", "FederationMetadata/2007-06/{file}", "~/FederationMetadata/2007-06/FederationMetadata.aspx")

然后我只检查{file} 参数以确保它等于FederationMetadata.xml

所以在你的情况下,只需将 Pass/Attendee/{attendeeId}/pass.pkpass 设置为 Pass/Attendee/{attendeeId}/{pkpass}

并检查{pkpass} 以确保它等于您页面上的pass.pkpass

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多