2010-12-07 12 views
1

ASP.NET MVCアプリケーションで実行時にURLを作成しています。これを行う最善の方法は何ですか?実行時のIIS ApplicationName ASP.net

url = string.Format("/controller/action/{0}/{1}/{2}/{3}/{4}", request.Id, 
              builds.Release, builds.Localization.Value, builds.Label, SessionId); 

URLは最終的にAJAXコールをコントローラアクションに戻すために使用されます。問題は、私のデプロイメント環境では、このアプリケーションはルートではないため、URLは有効ではないということです。

{host} \ url < - これは私が持っているものです。 {host} {applicationname} \ url < - これが私の必要です。

私は実行時にアプリケーション名を解決し、それを使ってURLを構築しようとしていました。アプリケーション名だけを取得するにはどうすればよいですか?これが最善の方法ですか?

ありがとうございます!

答えて

1

あなたのURLのfirt部分としてRequest.ApplicationPathを含める必要があります。

url = string.Format("{0}controller/action/{1}/{2}/{3}/{4}/{5}", Request.ApplicationPath, request.Id, 
              builds.Release, builds.Localization.Value, builds.Label, SessionId); 

VirtualPathUtilityクラスもご覧ください。 (idreleaselocalizationlabelsessionIdトークン取って)これは明らかにあなたが正しいルートが設定されていることを意味し

Url.Action("SomeAction", "SomeController", new { 
    id = request.Id, 
    release = builds.Release, 
    localization = builds.Localization.Value, 
    label = builds.Label, 
    sessionId = SessionId 
}); 

:具体的に

VirtualPathUtility.ToAbsolute() 
2

最良の方法は、URL helper Actionメソッドを使用することです

routes.MapRoute(
    "MyRoute", 
    "{controller}/{action}/{id}/{release}/{localization}/{label}/{sessionId}", 
    new { controller = "SomeController", action = "SomeAction" } 
); 

備考:文字列の連結および/またはst URLエンコーディングなどの問題が発生したくない場合は、URLを処理するときに指定してください。

備考2:UrlHelperのインスタンスは、コントローラのUrlプロパティとして各コントローラアクションで使用できます。各ビュー、および各ヘルパーに表示されます。

関連する問題