【发布时间】:2012-07-27 17:19:36
【问题描述】:
我已经在 global.asax 文件中为已移动到数据库的图像设置了一个路由表。当我使用将 EmpImages/[numeric id] 作为基本格式的 url 时,如果我使用与 ~/EmpImages/42 相同的 url,它就可以正常工作,但是我们有数百个硬编码链接是 ~/EmpImages/42 .png。当我尝试使用 EmpImages/[numeric id].png 时,永远不会调用处理程序。
我查看了几个显示 .ext 的示例,但它们使用的是页面路由而不是处理程序。使用下面的代码,您能告诉我我缺少什么吗?
这部分有效:
RouteTable.Routes.Add(new Route("EmpImages/{id}/{size}", new EmployeeImageRouteHandler()));
RouteTable.Routes.Add(new Route("EmpImages/{id}", new EmployeeImageRouteHandler()));
使用网址时:
~/EmpImages/42
~/EmpImages/42/256
但是当我尝试时:
RouteTable.Routes.Add(new Route("EmpImages/{id}/{size}.png", new EmployeeImageRouteHandler()));
RouteTable.Routes.Add(new Route("EmpImages/{id}.png", new EmployeeImageRouteHandler()));
使用网址时:
~/EmpImages/42.png
~/EmpImages/42/256.png
失败了。处理程序永远不会被调用。
我缺少什么简单的东西?
【问题讨论】:
-
您还指定了哪些其他路线?单独这种类型的路线应该没有问题。在您的第二个示例中,该请求可能与在您的图像处理程序之前注册的路由匹配。尝试将其移动到第一个注册的路线,看看是否有帮助。
-
目前只有这两条路线。当我使用与 /EmpImages/42 一起使用的第一个示例并将 /EmpImages/42.png 附加到它时,我希望它仍会触发处理程序,但在这种情况下也不会。我确实在某处读到“。”是特殊字符,但在微软文档的其他地方,它们显示了示例,特别是.jpeg,但它们路由到页面,而不是处理程序。创建一个单独的网页可能是一种解决方法,但处理程序理论上应该可以工作
-
请参阅下面对我的答案的编辑。