3

これがシナリオです。さまざまなテスト サイトへのリクエストをポート転送するルーターがあります。たとえば、http: //www.ourSite.com:8051 は、ルーターからポート 80 の Web サーバーに転送します。テスト Web サイトは、IIS6 (Windows Server 2003) で実行されている 1 つの Web サイトの仮想ディレクトリです。

アプリケーションの一部は、ベース URL を使用してアプリケーション内にいくつかのリンクを作成する電子メールを送信します。アプリケーションの開始時に構築されるベース URL は次のとおりです。

siteBaseUrl = string.Format("{0}://{1}{2}",
                HttpContext.Current.Request.Url.Scheme,
                HttpContext.Current.Request.Url.Authority,
                HttpContext.Current.Request.ApplicationPath.TrimEnd('/'));

たとえば、テスト サイトの 1 つがhttp://www.ourSite.com:8051/client1のようになっているとします。私は siteBaseUrl が http://www.ourSite.com:8051/client1 のようになることを期待しますが実際にはhttp://www.ourSite.com/client1のようになります(私は次のような質問を見つけようとしましたこれは StackOverflow にありますが、何も見つかりませんでした.おそらく、適切なキーワードで検索していなかったか、もっとコーヒーが必要です.この問題に関する助けがあれば大歓迎です.

4

2 に答える 2

5

HttpContext.Current.Request.Url は IIS から要求されたリソースに基づいており、クライアントの要求 URL を表していません。ただし、HTTP ヘッダーから Host プロパティを使用することはできます。

siteBaseUrl = string.Format("{0}://{1}{2}",
                HttpContext.Current.Request.Url.Scheme,
                HttpContext.Current.Request.Headers["host"],
                HttpContext.Current.Request.ApplicationPath.TrimEnd('/'));
于 2009-07-21T20:45:51.457 に答える
0

ポート番号がルーターによって取り除かれている場合は、常に JavaScript を使用して URL を取得し、それをサーバーに送信することができます。

于 2009-07-21T20:32:00.033 に答える