我有一个处理图像请求的.NET控制器。为什么HTTP GET请求在HTTP GET时没有被routes.MapRoutes()捕获?
有在web.config中,其将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
请求的URL重写规则,动作正确路由到正确的控制,我得到预期的HTTP/1.1 200 OK
响应,但是当我将HTTP动词从GET
更改为HEAD
时,我收到一个HTTP/1.1 404 Not Found
响应。
将断点放入我的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()
的问题,但我不知道如何去查找和调查它。
你烤你的蛋糕和吃它太...哈哈哈 –
这似乎很so :) –