【发布时间】:2016-11-25 08:53:56
【问题描述】:
我正在为我的公司开发一个网站,该网站将允许我们存放和分发 .XML 和 .HTM Perfmon 模板。该站点由一个用于创建模板的创建者工具和一个存储模板的存储库组成。当用户点击存储库站点并选择查看 XML 或 HTM 模板时,页面会在目录 (~/Perfmon Templates/) 中查找并列出用户指定类型的所有文件。它创建文件的超链接并解析文件以列出模板中包含的计数器。这一切都在我的本地机器上正常工作。昨天,我将网站发布到运行 ASP.NET 4.6 的 IIS7 服务器上。
发布后,在测试站点时,我发现存储库中的超链接不再起作用。这是因为路径从 ~/Perfmon Templates/ 到 ~/Perfmon/Perfmon Templates 的变化非常小。因此,我打开了存储库网页背后的 C# 代码,并更改了超链接的相对路径以反映路径更改。将.cs代码隐藏文件和.aspx页面文件备份到服务器后,再次运行测试,发现超链接路径没有变化。
此时我的第一个想法是 C# 文件必须被缓存在某个地方,所以我在浏览器上尝试了 CTRL+F5 以查看是否解决了问题。它没有。
所以我回到了我机器上的本地副本,并尝试在我的本地机器上以调试模式运行更新的页面。我设置了创建超链接的断点,并确保超链接上的相对路径指向更新的位置。然后我开始调试,但发现站点根本没有处理我的断点,无论我是选择从“调试”菜单开始调试还是单击“播放”按钮启动它。
在那之后不起作用,我尝试注释掉控制超链接创建的所有 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 技巧来查看是否是浏览器缓存在干扰。这些东西似乎都没有帮助。还有什么我可以尝试的吗?
【问题讨论】:
-
您是否尝试过清理和重建解决方案?部署新构建的 dll。
-
您有 Web 应用程序 项目。您必须重建应用程序并从
bin文件夹上传.dll。如果是 Website 项目,那么上传.aspx和.cs文件就足够了。 -
谢谢大家,这不是我需要的全部答案,但它足以让我走上解决问题的正确道路。事实证明,这是我的错(惊喜!)。我更改了构建输出目录,因此每当我重新构建解决方案时,这些更改都不会反映,因为构建输出文件位于其他位置。我将构建输出目录更改回默认值,但这破坏了 Application Insights。最后,我不得不创建一个新项目并将旧项目中的所有文件复制到新项目中。之后,一切似乎都正常
标签: c# html asp.net .net hyperlink