【发布时间】:2017-01-16 10:14:09
【问题描述】:
我有一个处理图像请求的 .NET 控制器。
web.config 中有一个 URL 重写规则将http://localhost/images/1809x1280/image1.jpg 转换为
给http://localhost/image/get/image1.jpg/1809/1280
然后我有以下RouteConfig 规则
routes.MapRoute()
name: "Images",
url: "image/get/{filename}/{width}/{height}",
defaults: new { controller = "Image", action = "Get" }
);
当我执行HTTP GET 请求时,该操作被正确路由到正确的控件并且我得到了预期的HTTP/1.1 200 OK 响应,但是当我将HTTP 动词从GET 更改为HEAD 时,我收到了一个@ 987654329@回复。
在我的 ImageController.Get() 方法中放置了一个断点后,我注意到只有 HTTP GET 请求在命中它。
然后在Global.asax.cs 的Application_BeginRequest 内放置一个断点,HTTP GET 和HTTP HEAD 请求都会命中断点。
当请求为HTTP HEAD 时,我拥有Request 对象的以下属性:
RawUrl "/images/1809x1280/image1.jpg" string
Url {http://localhost/image/get/image1.jpg/1809/1280} System.Uri
这是正确的,表明 web.config 重写规则已经生效,但 ImageController.Get() 从未被命中。
目前routes.MapRoute() 似乎有问题,但我不知道如何着手调查。
【问题讨论】:
标签: c# asp.net .net asp.net-mvc url-rewriting