2016-09-08 7 views
1

イメージリクエストを処理する.NETコントローラがあります。なぜHTTP HEAD要求がroutes.MapRoutes()によってキャッチされないのですか?HTTP GETは何ですか?

私はHTTP GET要求を実行すると、私は次のRouteConfigルール

routes.MapRoute() 
     name: "Images", 
     url: "image/get/{filename}/{width}/{height}", 
     defaults: new { controller = "Image", action = "Get" } 
    ); 

を持ってhttp://localhost/images/1809x1280/image1.jpg

http://localhost/image/get/image1.jpg/1809/1280に変換し、web.configファイル内のURLの書き換えルールがあり、アクションが正しくされています正しいコントロールにルーティングされ、私は応答を得ますが、HTTP動詞をGETからHEADに変更すると、私はHTTP/1.1 404 Not Foundという応答を受け取ります。

私のImageController.Get()メソッドにブレークポイントを設定したところ、HTTP GET要求のみがヒットしていることに気付きました。

が、その後Global.asax.csApplication_BeginRequest内のブレークポイントを置いた、ブレークポイントが両方HTTP GETHTTP HEAD要求のためにヒットします。

要求私はRequestオブジェクトの以下の特性を有していたHTTP HEADた:正しいとweb.config書換え規則がで蹴られたことを示す

RawUrl "/images/1809x1280/image1.jpg" string

Url {http://localhost/image/get/image1.jpg/1809/1280} System.Uri

しかしImageController.Get()を決してヒットしません。

この時点でroutes.MapRoute()に問題があるようですが、どうやって調査するのかよく分かりません。

答えて

0

明らかに、私は思ったよりも簡単でした。

私は次のようにそれを修正したとのこと置き換えるだけ[HttpGet]属性で修飾された私のコントローラのアクションを見ている以外、どこでも見:ハハハ...

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)] 
public ActionResult Get(string imageName){ 
... 
} 
+0

をあなたがあなたのケーキを焼いて、それがあまりにも食べ –

+0

それはそうだ:) –

関連する問題