我正在维护一个 ASP.NET Web Forms 网站(我的意思是网站,它不是 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
相处中的最后一个障碍,应用程序中有一个链接,如下所示:
<asp:HyperLink id="ContactUsLink"
runat="server"
Enabled="true"
NavigateUrl="/ContactUs.aspx"
Text="Contact Us">
</asp:HyperLink>
我之所以说这是相处中的一个障碍,是因为我知道内联代码(如上面的示例)不适用于服务器控件。它实际上会引发编译器错误:
服务器标签不能包含 <% ... %> 结构。
所以看来我显然走错了路,我需要一些帮助。我期待着你的回答。