繁体   English   中英

将MVC应用程序作为子应用程序运行?

[英]Running an MVC Application as a Sub-Application?

我正在尝试创建一个MVC应用程序作为我的标准Asp.Net Web应用程序的子应用程序。 这两个项目都在同一个解决方案中。 虽然父应用程序看起来很顺利,但我无法让子应用程序工作。 在对我的两个web.configs进行一些按摩之后,我能够让Asp.Net运行时接受配置,但是我无法浏览到MVC应用程序中的任何页面/控制器,包括子的根-application(“ http:// RootSite / SubApplicationName / ”)。 我不断得到404。

实际上,当我转到网址“ http:// RootSite / SubApplicationName / Home / Index / ”时,我确实收到了回复。 它将我重定向到该文件夹​​中的index.aspx,并抛出此错误:

无法找到“索引”视图或其主页。 搜索了以下位置:
〜/浏览/首页/的Index.aspx
〜/浏览/首页/ Index.ascx
〜/查看/共享/的Index.aspx
〜/查看/共享/ Index.ascx

IIS(7)中的子应用程序设置得非常简单:它设置为在与父应用程序相同的应用程序池中运行,后者在集成模式下运行Asp.Net 2.0。

我的怀疑是我在web.configs中有一些东西正在抛弃它。 是否存在关于HTTPModules或URL授权模块等的事情,我应该确认这些事情不会妨碍MVC的发展?

另外,在global.asax.cs文件中,默认路由是否应该不同? 默认情况下,传递给routes.MapRoute的url参数是:

"{controller}/{action}/{id}"

它应该在子应用程序的名称前面,如此吗?

"SubApplicationName/{controller}/{action}/{id}"

我尝试过这样的改变,但它并没有解决问题。

任何想法都非常感谢。 此外,有关将MVC Web应用程序设置为子应用程序的一般信息也很棒。

谢谢。

我做了类似的事情,但不一样,我不得不从一个单独的DLL加载视图。 在我的情况下,它是一个类库,而不是一个不同的Web应用程序,但据我所知,它应该工作相同。

您要做的第一件事是创建一个VirtualPath Provider来告诉路由引擎如何在子应用程序视图中查找您的东西。 有关如何执行此操作的详细说明,请访问:

http://www.wynia.org/wordpress/2008/12/05/aspnet-mvc-plugins/

我相信这会让你开始;)

子应用程序不直接适用于MVC Web应用程序。 你必须在global.asax中编写很多被黑客入侵的代码。 使用子域而不是子应用程序。

确保您没有在Views目录的名称中出现任何拼写错误。 我收到了同样的错误消息,经过30分钟的头部刮擦意识到我拼错了我的一个视图的文件夹名称。 IDE没有以任何有意义的方式选择它(例如,如果它明确地告诉我,我引用的视图的路径不正确 - “未找到”可能意味着一些不同的事情,那将是很好的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM