2009-07-24 23 views
4

のようなものです:ステージングについては http://localhost:29234/default.aspxローカル/ステージング/プロダクションのURLを判断する最善の方法は何ですか? URLをテストするローカル用

、アプリが仮想ディレクトリにあります。生産のために http://stage/OurApp/default.aspx

、それはしかし、時には我々根 http://www.ourcompany.com/default.aspx

です特定のディレクトリにリダイレクトする必要があります。私たちはどこにいるのか正確にはわからない。

したがって、/subdir1/mypage.aspxと言うにはどのようにリダイレクトすればよいですか?

MORE INFO

私は重要な項目を無視。このURLはブラウザに返され、一部のjavascriptコードでリダイレクトが実行されます。 (奇妙な、私が知っている)。だから、定期的なResolveUrl(「〜/ pagename.aspx」)は、完全な情報...

UPDATEを与えることはありません2、私は軒並み動作しているようです以下、になってしまった ...それをしかし、少し醜いですね。 subdir1は、Webアプリケーション内のディレクトリがある場合

StringBuilder buildUrl = new StringBuilder(@"http://"); 
buildUrl.Append(Request.Url.Host); 
if (Request.Url.Port != 80) { 
    buildUrl.Append(":"); 
    buildUrl.Append(Request.Url.Port.ToString()); 
} 
buildUrl.Append(this.ResolveUrl("~/Pages/Customers.aspx")); 
buildUrl.Append(String.Format("?AccountId={0}&tabName=Tab2&primaryCustomerId={1}", acctId, custId)); 
+0

私はJavaScriptが「よく知られていて」常に有効になっている閉鎖環境であると考えていますか? 現在のホスト名/ URIに基づいてどの環境を実行しているのかを判断しようとしているのか、基本Webディレクトリに関連したリダイレクトを使用するだけで問題があるのか​​、問題はありません。 –

+0

同じWebアプリケーション内にリダイレクトしていますか、別の仮想ディレクトリ/ Webアプリケーションにリダイレクトしていますか? – NYSystemsAnalyst

+0

完全内部アプリケーションです。同じアプリ。 – NotMe

答えて

1

パスが異なる環境間で発散し始めても、状況にまったく問題が生じない場合は、puttinのパスをweb.configに開始します。

ファイルパスが矛盾していてもそれは問題ありませんが、コードが一貫しているため、「私はどこにいるのか分かりません」という心配はありません。

+0

私はこれについて考えました。私の質問に追加したコード以外に、これはおそらく最良の答えです。ありがとう、 – NotMe

0

のショートカットですsubdir1/mypage.aspxの代わりに/ subdir/mypage.aspx - 最初のスラッシュがないことに注意してください)。この方法では、リンクが現在のページとの相対的な関係にあるため、アプリケーションがどこにあるかは関係ありません。

+0

URLをスラッシュなしで送り返すと、現在のディレクトリから開始していると考えられます。意味、私のページが/ sub3にある場合、/sub3/subdir1/mypage.aspxのフォワードスラッシュの結果を使用していない場合...間違った場所です。 – NotMe

+0

それで、2つのドット(..)で戻って1つのディレクトリに上げてください。 ../subdir1/mypage.aspx。私はちょうどコードでパスを自分自身で構築しようとするのではなく、Webブラウザ/サーバにパスの場所を扱わせる方が好きです。 – NYSystemsAnalyst

0

根拠のあるページにBASEタグを使用できますか?これを使用すると、すべての相対パスがBASEパスに基づいて解決されます。

0

一般的なアドバイス

私はあなたの設定でパスを保存することをお勧めします。私たちのプロジェクトの中には、さまざまな経路やURLが必要な理由があります。チルダ(〜)を使用することでいつも逃げることはできません。ここInntecで私たちのプロジェクトで

当社の戦略

、私たちのweb.configファイルには、データベース接続文字列と環境が何であるかと言って、変数が含まれている - などの生産、ステージング、開発、

その後データベースには、各環境に対応する変数が用意されています。設定を強く入力し、現在の環境に適した設定を取得/キャッシュする優れたクラスがあります。だから私たちのコードで言うことができます:Settings.AppUrlとすべてが動作します。

RedgateのSql Data Compareを使用して、すべてのインスタンスの設定を同期させます(各環境には常にすべての環境の設定があります)。また、各環境に完全なバッチ設定があることを確認する単体テストがあります。

これはこれを行う方法の1つです...これまでのところ、私たちにとっては本当にうまくいっています。

関連する問題