【问题标题】:Weird infinite loop after migrating ASP.NET application from VS 2010 to VS 2015将 ASP.NET 应用程序从 VS 2010 迁移到 VS 2015 后出现奇怪的无限循环
【发布时间】:2016-04-26 14:10:01
【问题描述】:

我们有一个古老但可靠的 ASP.NET Forms Web 应用程序,使用 Visual Studio 2010 SP1 使用 .NET 4 框架创建。我们的目标是将我们的开发环境迁移到 Visual Studio 2015,我的第一步是在安装了 VS 2015 的 VM 中测试 ASP.NET 应用程序。不幸的是,我遇到了一个非常奇怪的问题,只是无法找出导致问题的原因。

在将项目迁移到 Visual Studio 2015(没有问题)后,我在 VS 2015 中重新构建了它。网站正常运行,但单击登录按钮后,网站进入 Page_Load( ) 登录 aspx 页面的事件和母版页的 Page_Load() 事件(登录页面继承自)。

如果我在 login.aspx 的 Page_Load() 事件的第一行插入断点,我可以逐行执行此事件,当它到达 Page_Load() 中的最后一条语句时,它会立即跳转到第一行masterpage.master 的 Page_Load() 事件,如果我单步执行,它会重新进入 login.aspx 的 Page_Load 事件的第一行。这永远重复!唯一的偏差是第一次通过时,它还进入了 Global.asax 中的两个空事件(Application_BeginRequest 和 Application_AuthenticateRequest)。

我最初认为在任何一个 Page_Load() 事件中都发生了一些愚蠢的事情,但它只是无聊的代码,几乎没有什么作用。如果我注释掉两个 Page_Load() 事件中的所有代码并用int x = 1; 替换每个事件,我仍然会得到完全相同的行为。

我回到了应用程序的 VS 2010 构建版本并比较了所有源代码、配置文件等,没有什么不同。两个版本都在相同的操作系统 (Windows 8.1 x64)、浏览器 (IE 11) 和安装的 .NET 框架上运行。我什至构建了 VS 2010 版本并将其部署到 VS 2015 VM 上,发现它运行良好。我唯一的结论是,在 VS 2015 中构建之后发生了一些变化。

任何帮助将不胜感激,因为我无法弄清楚是什么原因造成的,也不知道如何进一步调查。

【问题讨论】:

  • 嗯,你是对的!这很奇怪。老实说,我不知道是什么原因造成的,但我会试试这个:在 2015 解决方案中,尝试删除母版页和登录页,然后重新添加它们。
  • @CaseyCrookston 不幸的是,重建主页面和登录页面没有帮助。

标签: asp.net visual-studio visual-studio-2010 visual-studio-2015 migration


【解决方案1】:

问题的原因最终是用于检测浏览器上是否启用了 Javascript 的服务器控件。此服务器控件是作为外部引用添加到 ASP.NET 项目中的预编译 .NET DLL。此 DLL 在 ASP.NET 项目的 VS 2010 和 VS 2015 版本中均未更改。老实说,我仍然不太明白在 VS 2015 中重建 ASP.NET 项目是如何导致这种情况的,但它一定是某种向后兼容性问题。

【讨论】:

  • 你是怎么想出来的?
  • @CaseyCrookston 我刚开始从登录页面中删除东西,直到它开始工作!
  • 酷。当我说删除它们并重新开始时,这有点像我想的方法。开始逐项重新构建两个页面,对每个页面进行测试,直到找到导致它崩溃的原因。你做了同样的事情,只是相反。
猜你喜欢
  • 2017-08-08
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
相关资源
最近更新 更多