7
私はMVC4.0rc

のasp.net MVCは、期間付きGETリクエストを受信しないこと

で.net4.5rc使用してい

次のコードは、MVC WEBAPIアプリケーションから取得されますが、私は同じ動作ですそこreularのasp.net MVCのため

マイregisterroutesコードは、これが彼らにピリオドを持っていないIDがうまく機能し、この

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapHttpRoute(
       name: "R1", 
       routeTemplate: "product/{id}", 
       defaults: new { 
           controller="Product", 
           id = RouteParameter.Optional 

           } 
      ); 

のように見えます。しかし、私はそれにピリオドのある製品を頼むと、その呼び出しはASP.NETに到達するように思われない

後ろに/ があるときに同様の投稿に提案されているように設定を使用すると、要約すると、それ

ないと動作しません

http://mysite.com/product/AZ0  //works 
http://mysite.com/product/AZ.0/ //work with relaxedUrlToFileSystemMapping 
http://mysite.com/product/AZ.0 //does not work 

応答は404であり、私は、これはASP.NETを介さずにIISによって返されると思います。 私は上記の最後のようなURLでroutedebuggerを実行すると、私もroutedebuggerのもの

を得ることはありませんどのようにパターンのURLがある場合には、IISがASP.NETに制御を渡すために作るのですか。 idにピリオドがあるかどうかに関係なく、mysite.com/product/{id}

ありがとうございました。

答えて

7

私自身これにお答えします。 URLリライトを追加すると、問題が解決されます。 web.configに次のコードを追加すると、URLがフォーム(product/)の場合、末尾の "/"でUrlを書き換えるよう指示されます。ファイルとして処理されなくなり、通常のMVCとして処理されます。

<system.webServer> 
    .... 
    <rewrite> 
     <rules> 
     <rule name="Add trailing slash" stopProcessing="true"> 
      <match url="(product/.*\..*[^/])$" /> 
      <action type="Rewrite" url="{R:1}/" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
関連する問題