2012-04-26 13 views
1

wwwrootのサブフォルダに移動さ​​れたMVCアプリケーションがあり、このサブフォルダはIIS経由でアプリケーションになっています。MVCルーティングを使用してIISサブアプリケーションを処理するにはどうすればよいですか?

www.mydomain.com/application/:それは次のようになります

www.mydomain.com/login

:私のログインページへのURLは次のようになります前のに対しので、ログイン

アプリケーションは正常に動作しますが、ルーティングやアプリケーションのリンクには影響していないようです。明らかにURL www.mydomain.com/content/images/myimage.pngから画像を取得しようとすると

<img src="/content/images/myimage.png"/> 

:しかし、それは私がそうのように画像のsrcのを参照しています問題を引き起こしていますとき今、しかし

routes.MapRoute("Default", 
       "application/{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 

:私は、私はURLの一部としてサブフォルダを考慮して変更しようとしているデフォルトルートを、使用しています私のGlobal.asaxファイルでは404

を返します。私はルートurに行くように試みるl www.mydomain.com/application私はちょうどディレクトリリストを取得します!コントローラに直接アクセスしようとすると、www.mydomain.com/application/dashboard私は404を取得します。

誰でもMVCルーティングを介してこの状況に対処する方法を知っていますか?

答えて

4
  1. ルーティングを変更する必要はありません。それはエントリーポイントからあなたのアプリまで動く。
  2. @ Url.Content( "〜/ content/images/myimage.png")を使用します。

希望すると、これが役立ちます。

+0

Yeh氏は、私がUrl.Contentを使用することができます知っているが、私のサイトは大きく、私は行くとUrl.Contentを使用するすべての画像の参照を変更したくありません! – jcvandan

+1

T4テンプレートを作成してあなたのために更新することができます。=)http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx –

+0

T4テンプレートについて知りませんでした。有用な音です。 – jcvandan

0

、このいずれかを試してみてください...

routes.MapRoute("Application", 
       "application/{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 

routes.MapRoute("Default", 
       "{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 
+0

これは、静的ファイルがルーティングされないため、このシナリオでは機能しません。それらはStaticFileHandler(IHttpHandler)によって処理されます。 – Shelakel

+0

これを試してみると、ActionLinkで使用されているルート値がない場合でも、ActionLinkで使用されている全ての剃刀URLは 'Application'で始まるアンカーURLを表示します – barrypicker

関連する問題