0

現在の「ディレクトリ」に XML 設定ファイルを要求することを要求する Flash ベースのコンポーネントがあります。

つまり、次のようなパスを求めています...

/Home/mysettings.xml
/Home/Record/mysettings.xml
/AnotherController/AnotherAction/mysettings.xml

これは面倒です。mysettings.xml何かをキャッチして静的アクションに送信するMVC ルートを作成しようとしています。XML のビューを作成しましたが、その場で変数を交換する必要がある可能性があります (おそらく何らかの URL クエリを使用します)。

これが私の最初の刺し傷ですGlobal.asax.cs

routes.MapRoute(
    "XmlOverride",
    "mysettings.xml",
    new { controller = "Home", action = "MyXML" }
);

しかし、私は何かが欠けています。404ing か、何をしても正しい場所に移動しないかのどちらかです。正しいアクションにルーティングする方法はありますか? プロセスで URL 変数を保持できますか?

ありがとう!

アップデート

私はこのように機能するハッキングされたバージョンを持っています。それが最善の方法かどうかはわかりませんが、うまくいくようです。誰かがより良い解決策を持っていますか?

routes.MapRoute(
    "XmlOverride",
    "{c}/mysettings.xml",
    new { controller = "Home", action = "MyXML" }
);
routes.MapRoute(
    "XmlOverride+Action",
    "{c}/{a}/mysettings.xml",
    new { controller = "Home", action = "MyXML" }
);

{controller}or{action}は固定パスにあるため使用できません。

4

1 に答える 1

1

この回答に基づいて、URLを書き換えることができます。

<rewrite>
  <rules>
    <rule name="MySettingsRewrite">
      <match url="(\w+)mysettings\.xml$" />
      <action type="Rewrite" url="/Home/MyXML" />
    </rule>
  </rules>
</rewrite>

正しいかどうかわからない場合は、正規表現を再確認する必要があります。

私が考えることができる他の唯一のオプションは、独自のルート ハンドラー クラスを実装し、それを使用することです。

于 2013-06-20T20:56:14.467 に答える