私は ASP.NET Web フォーム Web サイトを維持しています(Web アプリケーションではなく Web サイトを意味します)が、仮想ディレクトリでホストされているため、静的リンクの一部が壊れています。
http://www.somewhere.com/MyApp
そこで、ページへの仮想パスを指定して絶対 URL を取得する方法を見つけるために、パスをたどり始めました。そして、次のようなリンクを取ることができると述べた記事を見つけました。
<a href="/ContactUs.aspx">Contact Us</a>
次のようにします。
<a href="<%= System.Web.VirtualPathUtility.ToAbsolute("/ContactUs.aspx") %>">Contact Us</a>
しかし、ローカル パスは次のようになる可能性があるため、ローカルで(つまり、ASP.NET 開発サーバーに対して)動作していません。
http://localhost:7766/MyApp
しかし、によって生成されるパスVirtualPathUtility
は次のとおりです。
http://localhost:7766/ContactUs.aspx
そこで、ローカルの IIS インスタンスにデプロイして、どのように動作するかを確認することにしました。そして結果は同じでした。ローカル IIS パスは次のとおりです。
http://localhost/MyApp
お問い合わせページへのパスは次のとおりです。
http://localhost/ContactUs.aspx
うまくやっていくための最後の問題として、アプリケーションには次のようなリンクが 1 つあります。
<asp:HyperLink id="ContactUsLink"
runat="server"
Enabled="true"
NavigateUrl="/ContactUs.aspx"
Text="Contact Us">
</asp:HyperLink>
そして、それがうまくいかないという理由は、(上記の例のような)インライン コードがサーバー コントロールでは機能しないことを知っているからです。実際にはコンパイラ エラーがスローされます。
サーバー タグに <% ... %> 構造を含めることはできません。
どうやら私は明らかに間違った道を進んでいるようで、助けが必要です。あなたの答えを楽しみにしています。