【问题标题】:Using MVC project with existing Web Forms project将 MVC 项目与现有的 Web 窗体项目一起使用
【发布时间】:2025-12-01 11:10:01
【问题描述】:

我希望在 IIS 中托管的现有 Web 表单网站中加入一些新功能,并且正在考虑使用 MVC。我知道如果您只是在现有的 Web 表单项目中启用 MVC,您可以以一种相当直接的方式执行此操作。但是,我希望能够通过将旧代码与新代码分开,将其放入一个新项目中。旧项目有点乱,组织得不好,所以我能从中得到的东西越多越好。

但是,我认为这是不可能的(或者更准确地说,在我的情况下是个坏主意),原因如下:

  • 用户在 Web 表单站点上经过身份验证,因此我必须将某种形式的凭据传递给新的 MVC 站点,反之亦然
  • 我将无法在两者之间共享诸如 Session 之类的全局内容
  • 我必须协调会话时间,这样如果在设定的时间内没有引用主站点,我就不会超时
  • 对于基于 MVC 的站点,我需要一个完全不同的根 URL(尽管我可以使用相同的域)。

我的主要问题是——我是否错过了一些明显的方法来让它们作为一个有凝聚力的单元一起很好地发挥作用,或者我是否正确地假设如果我将它分拆到一个单独的 Web 应用程序项目中,那么它们本质上是两个不同的应用?如果没有,是否有其他方法可以将两者绑定在一起,或多或少地作为一个而不实际组合项目?

【问题讨论】:

    标签: asp.net asp.net-mvc iis webforms


    【解决方案1】:
    • 如果您使用 cookie 来保存用户标识符,您可以共享用户身份验证。然后在两个系统中使用相同的库来解码cookie等。
    • 共享会话对象将是一件困难得多的事情。
    • 是的,这可能发生。
    • 您可以为每个系统设置不同的根 URL。 (您也可以在 MVC 项目上设置默认路由作为代理,从 webforms 网页中获取网页,但实现起来有点复杂。

    总的来说,听起来你会花费很多时间和很多头痛。

    【讨论】:

    • 是的,我同意。我想在写这个问题的时候,我是在说我自己!