【问题标题】:Routing not working for MVC application under a Webforms website?路由不适用于 Webforms 网站下的 MVC 应用程序?
【发布时间】:2016-05-25 19:24:25
【问题描述】:

我正在 MVC 中创建一个报告应用程序,我想在多个网站中使用它。我希望能够简单地在每个消费网站下的 IIS 中创建一个应用程序,并将它们指向报告应用程序所在的同一目录。

当我尝试在 MVC 网站中执行此操作时,它运行良好。但是,当我尝试在 Webforms 网站下添加此应用程序时,我收到“403.14 - Forbidden”错误,因为它正在尝试使用静态文件处理程序。

如何纠正它以使用正确的处理程序路由到 Home 控制器?

【问题讨论】:

  • 我现在只是想在 Google 上进行研究,看看要尝试什么。我可以说问题与使用“StaticFile”处理程序而不是 asp.net 路由引擎(无论它的正式名称)有关。
  • 将两者结合起来没有问题,但有一些设置工作:davepaquette.com/archive/2013/12/30/…hanselman.com/blog/…
  • @BrianMains 谢谢,但如果我没记错的话,这些文章是关于将 MVC 集成到现有 Webform 应用程序中的。我以前做过,效果很好,但这次我实际上是在尝试在现有 Webforms 网站下添加一个完全独立的 MVC 应用程序(即有点像虚拟目录,但作为应用程序)。
  • 你尝试过使用经典路由吗?
  • 您可以试试这个setup described by Scott Hanselman - 这在您的情况下似乎可行,因为您正在阻止“子”(现有 Web 表单应用下的 MVC 虚拟应用)从其“父”继承配置。呵呵..

标签: asp.net-mvc webforms asp.net-mvc-routing virtual-directory


【解决方案1】:

问题是基础网站的应用程序池使用的是 2.0 clr。意识到这一点后,我进行了必要的 web.config 调整并重新编译了应用程序以在 4.0 clr 下运行,然后一切正常。

我还有一堆<location path="." inheritInChildApplications="false"> 部分。不知道现在是否需要这些,但我要离开它们,因为它可以工作并且子应用不需要从基础网站继承任何东西。

这篇文章 (Expression of type 'System.Web.Mvc.MvcWebRazorHostFactory' cannot be used for return type 'System.Web.WebPages.Razor.WebRazorHostFactory') 还帮助我在从 2.0 转换到 4.0 时尝试整理 web.config 内容。这有点痛苦,因为我必须解决几个错误,但我认为我主要只需要删除不再需要的 web.config 的某些部分(因为它们现在包含在机器配置中) .

【讨论】:

    猜你喜欢
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2011-04-03
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多