【问题标题】:Hosting an MVC and a webforms site on the same IIS7 instance - web.config inheritance在同一个 IIS7 实例上托管 MVC 和 webforms 站点 - web.config 继承
【发布时间】:2012-08-05 01:39:20
【问题描述】:

我们有一个用经典 ASP 编写的网站,然后我开始使用 Web 表单对其进行扩展。这些扩展存在于主文件夹的子文件夹中。现在我们决定我们更喜欢使用 MVC3。此外,由于我们希望随着时间的推移将所有站点都转换为 MVC3,因此我们将 MVC 代码托管在应用程序根目录中。我发现了一些其他问题,人们有类似的问题,但没有解决方案。问题很简单,似乎无法阻止我的 Web 表单应用程序从根文件夹继承 web.config 设置,因此它无法运行,它要么抱怨缺少 dll,要么抱怨正在运行.NET 版本错误,或者抱怨我需要删除一些设置(我尝试过但永远无法正常工作)。子文件夹中的应用程序还托管了一个由我们的应用程序调用的 Web 服务,它还运行 HTTP 处理程序来保护我们的图像内容,所以它里面有一些东西。我需要在子文件夹中运行我的 MVC 站点吗?有没有办法让 MVC 在 web 表单应用程序上方的文件夹中?我更愿意进行设置,以便他们共享会话数据,但在现阶段这看起来可能是不可能的......

所以要明确文件夹结构是:

<root>
   contains asp site and MVC site.
   <subfolder>
      contains webforms application
   </subfolder>
</root>

我的问题是让子文件夹运行,最好是在与 MVC 应用程序相同的会话中。

【问题讨论】:

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


    【解决方案1】:

    没有理由不能在 MVC 站点上运行常规 .aspx 文件。您是对的,web.config 设置是从父(链)继承的,但您只需在目录中添加一个新的 web.config 并使用相关设置。

    您需要做的是使用路由,因为默认情况下 MVC 会将所有请求路由到您的控制器类中。但是,如果您在 google 周围添加一个异常非常简单的路由。

    如果您发布一些特定错误,我们可能会提供进一步的帮助。

    哦,你是说经典 ASP 吗?即不是经典的 ASP.NET?因为在 ASP 和 ASP.NET 之间共享会话数据会很有趣。

    【讨论】:

    • 是的,我们使用数据库来获取ASP.NET和asp之间的数据。我关心的是确保 Web 表单和 MVC 之间的会话保持不变。路由不是我的问题,我可以在根目录中加载一个 aspx,但我无法从子文件夹中的应用程序加载任何内容。
    • 路由几乎肯定会成为问题的一部分,因为它将子文件夹路由到控制器 - 你必须停止。也就是说,如果您能提供确切错误的详细信息,我们可以提供更多帮助。
    • 好吧,我需要花一些时间进行 web.config 更改,以便让您了解我遇到的各种不同错误,但它们归结为“不重复 web.config 部分”允许”和“无法加载 dll,因为您的站点在旧版本的 .NET 上运行”。我的解决方案是能够运行这个应用程序,这样它就不会从根文件夹继承设置。我认为任何不这样做的代码更改都不会解决我的任何特定错误消息。
    • Web.config 总是被继承的——这通常是它的一大优点。但这就是说您应该能够解决所有问题。删除重复的部分,并确保网站的所有方面都使用相同版本的 .net
    • 好的 - 如果这是通用解决方案,我如何让我的 webforms 应用程序使用与 MVC 站点相同版本的 .NET?因为这似乎是核心问题,我到了摆脱重复错误的地步,只是被告知它无法加载 MVC 所需的 dll(尽管它们没有被使用),因为 DLL 太新了.
    猜你喜欢
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    相关资源
    最近更新 更多