我有一个处理图像请求的.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
更改为{时{1}}我收到HEAD
回复。
在我的HTTP/1.1 404 Not Found
方法中放置了一个断点后,我注意到只有ImageController.Get()
请求正在点击它。
然后在HTTP GET
的{{1}}内放置一个断点,Application_BeginRequest
和Global.asax.cs
请求都会遇到断点。
当请求为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
似乎存在问题,但我不确定如何进行调查。
答案 0 :(得分:0)
显然这比我想象的要简单。
除了查看仅使用[HttpGet]
属性修饰的控制器操作外,我向所有地方看了一下,用以下内容替换了它已修复它:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public ActionResult Get(string imageName){
...
}