我们有一个大型ASP(经典ASP)应用程序,我们希望将其转换为.NET,以便进一步发布.继续使用ASP是没有意义的,因为它已经过时了,我们不想从头开始重写它(Joel Spolsky告诉你为什么).
有没有办法将它自动从ASP转换为ASP.NET?
即使有经典ASP和ASP.NET之间的转换工具,它们也不会产生非常好的结果:这两种环境根本不同.一个快速的谷歌出现了一些结果,主要是"我们将让我们在印度的人做"多种多样.
我的建议是暂时不要触及你现有的ASP代码.在可预见的未来,Microsoft将支持运行时环境,因此不需要迁移.相反,开始研究ASP.NET中的新功能:这样,您将不会被遗留概念所阻碍,并且可以以您看到的任何方式使用Framework提供的新酷(包括ASP.NET MVC等内容)适合.
当然,您的新代码需要使用现有的ASP环境.在ASP和ASP.NET之间共享会话状态很可能是您的首要要求之一,但您很快就会发现更多这样的问题.
针对此类问题的"正确"解决方案将完全取决于您当前的代码和要求:有时,您将能够将.NET代码包装在COM对象中以供ASP代码使用,有时部分移植/迁移可能是解决方案.
但是,平均而言,"两个世界"的方法应该是完全可行的,并且允许您开发令人兴奋的新功能,而无需担心遗留代码.
好吧,我曾经为所有网络应用都是经典ASP的公司工作.当决定迁移到.NET时,我们必须找到将168(!)web应用程序转换为这个新框架的方法.我尝试了当时可用的所有工具来完成这一切,但都失败了.
最好的方法是构建一个新的Web服务器并从头开始,这样您就可以确保升级快速发生,并且由于新旧集成而无需任何操作.您将能够选择要保留的功能和视觉外观以及要更改的功能和视觉外观.不要浪费时间在自动工具上将旧的ASP文件/站点升级到.NET平台.到目前为止,没有人能够正常工作.
最重要的是,如果你在后端有数据库,你将遇到从网络应用程序连接到它的问题.
微软在MSDN上发表了一篇关于将ASP页面迁移到ASP.NET的文章.它们基本上告诉您在计算机/服务器上安装.net并一次转换一页.ASP和ASP.NET可以共存,因此可以随时将每个页面重命名为"aspx".但是,您应该注意,ASP和ASP.NET页面之间不共享会话状态和应用程序状态(有关该问题的解决方法,请参阅@ mdb的答案.)
还有ASP到ASP.NET迁移助手,但我不确定项目/程序是否仍然有效.您可以通过从此页面下载来尝试:
http://www.asp.net/downloads/archived/migration-assistants/asp-to-aspnet/