0

私は少し前にモノレールを学び(そして使用し)始めました、そして最近、私はルーティングに手を出しました。残念ながら、その周りのドキュメントはややまばらですが、私はさまざまなブログ投稿からいくつかの情報を得ることができました。それらのほとんどは2歳以上です。ルーティングを非常に迅速に設定できましたが、Monorailのルーティングエンジンが.jpegファイルをコントローラー/アクション要求として混乱させることに気付きました。

webconfigファイルはかなり標準的です:

 <monorail useWindsorIntegration="false" defaultUrlExtension=".rails">
    <url useExtensions="true"/>
    <controllers>
      <assembly>NetTwitter.Web</assembly>
    </controllers>
    <viewcomponents>
      <assembly>NetTwitter.Web</assembly>
    </viewcomponents>
    <viewEngine viewPathRoot="Views" customEngine="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine, Castle.MonoRail.Framework.Views.NVelocity"/>
  </monorail>
 <system.web>
    <httpHandlers>
     <!-- block direct user access to template files -->
      <add verb="*" path="*.vm" type="System.Web.HttpForbiddenHandler"/>
      <add verb="*" path="*.boo" type="System.Web.HttpForbiddenHandler"/>
      <add verb="*" path="*.st" type="System.Web.HttpForbiddenHandler"/>
      <add verb="GET" path="*.css" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.js" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.jpg" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.gif" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.png" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.jpeg" type="System.Web.StaticFileHandler" />
      <add verb="*" path="*.rails" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework"/>
    </httpHandlers>
    <httpModules>
      <add name="routing" type="Castle.MonoRail.Framework.Routing.RoutingModuleEx, Castle.MonoRail.Framework" />
    </httpModules>

Global.asax内のルーティングエンジンの初期化と同様に、次のようになります。

 public void Application_OnStart()
        {
            log4net.Config.XmlConfigurator.Configure();
            RoutingModuleEx.Engine.Add(
                new PatternRoute("<controller>/[action]"));
        }

エラー自体はそれをかなり明確に示しています:

{"コントローラーが見つかりません。エリア:''コントローラー名:'コンテンツ'"}

それで、なにかお手伝いできますか?前もって感謝します。

4

1 に答える 1

0

これは、RoutingModuleExを使用しているためです。これにより、実際のhttpHandlerが照合される前にURLが書き換えられます。

そして、あなたのルートはおそらくこれのために一般的です。

独自のweb.configを持つ/static/フォルダーを作成することで解決します。したがって、元のweb.configをオーバーライドします。

これはcontiansのみです:

<system.webServer>
    <handlers>
        <clear/>
        <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="Either" requireAccess="Read" />
    </handlers>
</system.webServer>

継承される可能性があるため、ここからもローニングモジュールを削除することをお勧めします。しかし、私たちはそれに関する問題に気づいていませんが、実際にはそれに頭を入れていません。1レベル下にある場合、ルートが一致しないか、サブフォルダーがhttpModulesを継承していない可能性があります。

于 2012-09-27T13:29:05.000 に答える