将ASP.NET应用程序从VS 2010迁移到VS 2015后出现了奇怪的无限循环

时间:2016-01-20 16:11:41

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

我们使用.NET 4框架,使用Visual Studio 2010 SP1创建了一个旧的但可靠的ASP.NET Forms Web应用程序。我们的目标是将我们的开发环境转移到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虚拟机上,发现它运行良好。我唯一的结论是,在VS 2015中构建它之后发生了一些变化。

任何帮助都会受到高度赞赏,因为我无法解决导致这种情况的原因,也不知道如何进一步调查。

1 个答案:

答案 0 :(得分:2)

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