加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 经典ASP和MVC并排,不同的项目?

发布时间:2020-12-16 06:53:19 所属栏目:asp.Net 来源:网络整理
导读:我试过用几种不同的方式来问这个,但是让我们再试一次(因为我还没有得到答案,这让我疯了!) 我有一个非常大的经典ASP 3.0应用程序(约350K行),我想开始迁移到ASP.NET MVC.我想将旧的ASP文件保存在与MVC不同的项目中. 关于如何调试这些的想法?我应该将文件转储
我试过用几种不同的方式来问这个,但是让我们再试一次(因为我还没有得到答案,这让我疯了!)

我有一个非常大的经典ASP 3.0应用程序(约350K行),我想开始迁移到ASP.NET MVC.我想将旧的ASP文件保存在与MVC不同的项目中.

关于如何调试这些的想法?我应该将文件转储到同一文件夹中并创建两个不同的项目(一个WAP和一个MVC应用程序),它们引用每个文件和文件夹所需的相关文件和文件夹?这应该有效,但有没有人有更好的主意?我需要能够单独迁移应用程序的一小部分,因为这可能需要一到两年才能完成.

解决方法

免责声明这是我的头脑,我从来没有这样做,可能是不合适的:

经过初步审核,我认为您有以下讨论的3个替代方案:

>合并到一个应用程序中,
>将一个应用程序作为根应用程序,将另一个应用程序作为“子”应用程序
>构建后将合并复制到一个应用程序中(这可能无法实现)

1)合并到1个应用程序中会给你以下好处,相对简单你需要修改global.asax – 设置你的mvc路由,IOC等 – HttpApplication,Session和Security(假设基于表单)才会起作用.

有一个有点“次要”的问题,那就是共享tempData,如果你可以在你的页面上实例化一个SessionStateTempDataProvider(init加载,卸载以保存类似于视图状态),你应该能够创建,我似乎无法找到博客,但认为几个月前它是Steve Sanderson.

您的单元测试/代码覆盖率很难跟踪,您可能需要考虑管理方法,这是一个完全不同的讨论.

2)使用此选项,您将完全分离应用程序与新的继承问题集.如果您的应用程序使用它,HttpApplication.*可能会导致问题,因为它们会引用不同的文件夹,上下文等,但忽略它表明您对它们是不同的应用程序感到高兴

下一个大问题是让Sessions工作,现在这可能会非常棘手,如果session是inproc,那么每个应用程序都不会看到其他应用程序会话,但是如果你使用SQL或自定义缓存服务器进行会话状态你应该是能够“破解”程序或引用/配置并在应用程序之间共享会话状态 – 最糟糕的情况下,您将需要编写自己的会话提供程序,(我从未写过一个,所以不知道这将有多难或如果它甚至实用).

下一个问题是表单身份验证,您可以执行标准单点登录,并确保MachineKey验证和解密密钥在配置中是相同的.临时数据将与选项1相同.对我而言,这听起来有太多不可改变的事情,是可行的……

3)假设您使用您的asp.net站点并添加对mvc的引用并添加默认的全局asax路由等,应用程序仍应干净地构建,但在查找/ controller / action / id类型路由时抛出路由错误,所以你可能需要检查一下.

假设有效,您可以“潜在地”对两个应用程序进行xcopy合并(即将所有文件从mvc应用程序复制到预部署的asp.net应用程序中).我知道你可以通过创建一个两个已经合并的应用程序的大项目来实现这一点,但这样代码在构建过程的后期阶段就会被合并. (签名的集会,让人觉得很麻烦).再次,您将需要处理临时数据问题…

我没有涉及网址重写以及您可能需要考虑的许多其他方面,请注意每种方法都有明显的缺点,您可能需要考虑这些方面.

总结一下,我认为你最大的问题是来自mvc方面的HttpApplication,Session和TempData,来自asp.net方面的查看状态. Url重写,身份验证应该更容易.

正如阿甘正传所说:“那是我对此的看法”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读