C#/ ASP.NET:代码隐藏更改后HREF路径未更新

时间:2016-07-21 16:34:31

标签: c# html asp.net .net hyperlink

我在我公司的网站上工作,这将允许我们存放和分发.XML和.HTM Perfmon模板。该站点包含一个用于创建模板的创建工具和一个存储模板的存储库。当用户访问存储库站点并选择查看XML或HTM模板时,该页面将查找目录(〜/ Perfmon Templates /)并列出用户指定的所有类型的文件。它会创建指向该文件的超链接,并解析该文件以列出模板中包含的计数器。这一切都在我的本地机器上没有问题。昨天,我将网站发布到运行ASP.NET 4.6的IIS7服务器上。

发布后,在测试网站时,我发现存储库中的超链接不再有效。这是因为从〜/ Perfmon Templates /到〜/ Perfmon / Perfmon模板的路径变化很小。因此,我打开了存储库网页背后的C#代码,并更改了超链接的相对路径以反映路径更改。将文件后面的.cs代码和.aspx页面文件复制回服务器后,我再次运行测试,发现超链接路径没有变化。

此时我的第一个想法是,C#文件必须在某处缓存,所以我在浏览器上尝试了CTRL + F5以查看是否更正了问题。它没有。

所以我回到了我机器上的本地副本,并尝试在本地计算机上以调试模式运行更新的页面。我设置了创建超链接的断点,并确保超链接上的相对路径指向更新的位置。然后我开始调试,但发现该网站根本没有处理我的断点,无论我是选择从Debug菜单开始调试还是单击Play按钮启动它。

之后没有工作,我尝试评论控制超链接创建和重新启动调试的所有C#代码行。令我震惊和惊讶的是,旧的超链接路径仍然出现在页面上。

似乎页面甚至没有读取C#代码隐藏文件,但我知道它必须从某个地方获取代码,并且代码隐藏文件是我的解决方案中唯一的位置,其中超链接路径是均匀的提及。

以下是控制超链接创建的C#代码隐藏文件的代码。我不确定它是否有助于解决这个问题,因为我已经在一点上评论了几乎所有的问题,但它仍然没有什么作用。

HyperLink fileLink = new HyperLink();
        fileLink.NavigateUrl = "~/Perfmon/Perfmon Templates/" + f.Name.ToString();
        fileLink.Text = f.Name.ToString();
        fileLink.Visible = true;
        fileLink.Style.Add("color", "#111111");
        fileLink.Style.Add("text-decoration", "none");

        string perfCounterList = string.Join(Environment.NewLine, counters);
        string perfCounters = Regex.Replace(perfCounterList, @"\r\n?|\n", "<br />");
        //dt.Rows.Add(Count, "<a href='/Perfmon/Perfmon Templates/" + f.Name.ToString() + "'>" + f.Name.ToString() + "</a>", perfCounters);
        dt.Rows.Add(Count, fileLink, perfCounters); 

任何人都可以指出我哪里出错了吗?我检查了web.config文件以确保启用了调试。我尝试过CTRL + F5技巧,看看它是否是干扰的浏览器缓存。这些事情似乎都没有任何帮助。我还能尝试别的吗?

1 个答案:

答案 0 :(得分:0)

问题是由更改构建输出目录而不是将构建文件从新构建位置移动到服务器引起的。