C# で記述された ASP.NET Web アプリケーションを継承しました。サイト全体の多くのページで、ホスト名は次を使用して取得されます。
BaseHost = Request.Url.Host;
私は Visual Studio 2012 Express を使用しており、ローカルの IIS Express サーバーにインストールされているため、ローカルでデバッグ/実行すると、ホスト名 (localhost) にポート番号が追加されたままになっているようです。上記のコードではポート番号が含まれないため、コードによって生成されたリンク (メニュー項目のリンク、リダイレクトなど) が壊れます。
コードを次のように変更することで、この問題を解決できることがわかりました。
BaseHost = Request.Url.Authority;
これは、ローカルで実行しているとき (localhost:4652) およびステージング サーバー (development.mysite.com) に公開されているときにポートを含めることで修正されるようです。
私の質問: これは悪いフォームですか? これがライブ サイトで問題を引き起こす時間や状況はありますか? これらすべてのインスタンスをすばやく置き換える方がはるかに簡単に思えます。append の小さなルーチンを作成することを検討しました: with Request.Url.Port
が、 を使用するだけの方が簡単なようですRequest.Url.Authority
。簡単すぎるかも…
オンラインと MSDN で質問を調べてみましたが、答えが見つかりません。