4

これはおそらく簡単な質問ですが、私はそれを機能させることができません。

このルートを RouteConfig で指定しました

routes.MapRoute(
    name: "DefaultSiteRoute",
    url: "{accountid}/{hostname}/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, accountid = UrlParameter.Optional, hostname = UrlParameter.Optional  }
);

そして、このようなURLではうまく機能します

/123456/www.test.com/

またはこれ

/123456/www.test.com/Controller/アクション

しかし、それはこれに対処することはできません

/123456/www.test.com

IIS 404 が表示される

奇妙なのはUrl.Action、デフォルトのコントローラーとアクション (つまり、ホーム/インデックス) を使用してそのルートを呼び出すと、末尾のスラッシュのない URL が作成され、それが認識されないことです。末尾のスラッシュの有無にかかわらず動作するために本当に必要です。

4

1 に答える 1

6

問題は、ASP.net 4.0 が拡張子で終わる URL を MVC にルーティングしないことです。これは、静的ファイルへのリクエストを高速化するために行われます。このリンクを参照してください

できること:

1) UrlRoutingModule を構成して、すべてのマネージドおよびアンマネージド リクエストをルーティングします (デフォルトでは、マネージド リクエストのみをルーティングします)。

欠点: パフォーマンスが低下する可能性があります。

<system.webServer>
    <modules>
     <remove name ="UrlRoutingModule-4.0"/>
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="runtimeVersionv4.0" />
    </modules>
<system.webServer>

2) .com、.net を処理するように構成します。組織などの拡張機能

欠点: ハックのように感じます。

   <system.webServer>
       <handlers>
          <add name="UrlRoutingHandler"
           type="System.Web.Routing.UrlRoutingHandler, 
                 System.Web, Version=4.0.0.0, 
                 Culture=neutral, 
                 PublicKeyToken=b03f5f7f11d50a3a"
                 path="*.com"
                 verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"/>
于 2013-11-14T13:14:39.743 に答える