【发布时间】:2010-10-15 17:08:59
【问题描述】:
我有一个最初部署到 Windows 2000 服务器上的 .Net 1.1 框架的 ASP.NET 应用程序,我现在正在使用 2.0.50727 的 Windows 2008 服务器上使用它。我们使用波浪号 (~) 来解析应用程序的许多区域中的绝对路径,它适用于诸如 asp:hyperlink 控件(带有 run-at server 标签)之类的东西,但适用于使用 HyperLinkColumns 创建的绑定数据网格控件基于从我们的数据库返回的 ID 值的链接,波浪号正在写入页面。
这段代码:
HyperLinkColumn oLink = new HyperLinkColumn();
oLink.DataNavigateUrlField = "IdField";
oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";
正在将其转储到页面:
<a href="~/Here171201.aspx">
IIS 或 .NET Framework 版本之间的哪些变化可能导致此功能不再起作用? Tilde 肯定在 1.1 中解决了 - 我在我们组织的十几个 1.1 框架服务器上部署了完全相同的代码。不幸的是,设置 DataNavigateUrlFormatString 的类无权访问页面,所以我必须做一些事情来插入 Page.ResolveUrl 解决方法...
【问题讨论】:
-
波浪号在 Windows 中解析为什么?自从多年前在 unix 上引用用户的主目录时,我就没有真正使用过它。
-
在 asp.net 中它应该解析为虚拟目录或应用程序安装到的绝对路径 - 这样开发人员不需要知道他们是否要安装应用程序: Server/App 或 Server/Site