2

私たちのほとんどは、実稼働サーバーに公開する前に、ローカルホストで Asp.NET Web アプリケーションを開発してテストします。しかし、私にとっては、絶対パスを適切に取得できないため、ローカルホストは時々苦痛です。私のアプリがにあるとしhttp://localhost/MyApp/ましょう。ホストを正しく取得できません。いくつかのコードで取得できますが、より一般的なものにするのが好きなので、他の開発者が同じアプリケーションを などの別の場所に配置するとhttp://localhost/TheirApp、正常に動作するはずです。

サンプル問題:

このような絶対パスを使用するたびに/aboutus.aspx、これが発生しhttp://localhost/aboutus.aspxて省略されMyAppます。相対パスを使用すると、http://localhost/MyApp/IamHere.aspx/aboutus.aspxかなり邪魔になります。

したがって、Request.Url.AuthorityまたはRequest.Url.Hostが返される場合http://localhost/MyAppは、これらを使用して URL を追加し、適切な解決策を見つけることができます。

代替ソリューション:

私はこれを行うことができます:

if(Request.Url.Host.StartsWith("localhost"))
{
    string[] segments = Request.Url.AbsolutePath.Split("/");
    var localHost = Request.Url.Authority + "/" + segments[0];
}

次に、localHost変数を使用してパスを追加できます。

しかし、皆さんがそのような問題にどのように対処しているかを知りたいですか?

ありがとう、

4

3 に答える 3

6

何を達成しようとしているのかよくわかりませんが、チルダ ( ~) を使用して Web アプリケーションのルートを参照すると、問題が解決するはずです。

string url = ResolveUrl("~/aboutus.apsx");

ASP.NET アプリケーションは、 、、またはその他のものであるかどうかを自動的~に判断します。localhostlocalhost:34534someserver.net/Deep/Path

于 2012-10-03T00:02:41.830 に答える
1

構成パラメーターを介して、またはアプリがそれを把握することにより、どのホストおよびどのパスでも動作するように、適切に動作するアプリの仕事です。プログラム/スクリプト自体とホスト名の間のパス (ビット間のビット) を把握することはそれほど難しくありません。いずれにせよ、ほとんどの場合、スクリプト/プログラムは相対パスのみを使用できます.Webサーバーは他のビットを自動的に追加します...したがって、それを記述する必要はありません.

于 2012-10-03T00:06:54.190 に答える