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

标签 c# .net asp.net asp.net-mvc iis-7

我正在尝试创建一个 MVC 应用程序作为我的标准 Asp.Net Web 应用程序的子应用程序。这两个项目都在同一个解决方案中。虽然父应用程序似乎运行良好,但我无法让子应用程序正常工作。在对我的两个 web.configs 进行一些修改之后,我能够让 Asp.Net 运行时接受配置,但是我无法浏览到 MVC 应用程序中的任何页面/ Controller ,包括子的根目录-应用程序(“http://RootSite/SubApplicationName/”)。我不断收到 404。

实际上,我在访问 url“http://RootSite/SubApplicationName/Home/Index/”时确实收到了响应。它将我重定向到该文件夹​​中的 index.aspx,并抛出此错误:

The view 'Index' or its master could not be found. The following locations were searched:
~/Views/Home/Index.aspx
~/Views/Home/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/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 加载 View 。在我的例子中,它是一个类库,而不是一个不同的网络应用程序,但据我所知,它应该工作相同。

您要做的第一件事是创建一个 VirtualPath Provider 来告诉路由引擎如何在子应用程序 View 中查找您的内容。可以在此处找到有关如何执行此操作的很好的解释:

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

我相信这会让您入门 ;)

关于c# - 将 MVC 应用程序作为子应用程序运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640603/

相关文章:

c# - DateTime.Min在Linq to XML中字符串等于Empty或Null时的值

c# - 奇怪的 C# 编译器行为(重载解析)

C# - 如何在其末尾剪切字符串以适合 div?

html - 如何从同一页面上现有 silverlight 容器的超链接打开 url

c# - C# 中的日期时间分析器错误

asp.net - 如何在Azure端点中传递 header ..?

c# - 如何通过 XAML 中定义的数据模板以编程方式创建元素?

c# - 如何使用 iTextsharp 将文件插入到现有 PDF 文件夹的文件夹中

c# - .NET C# : HttpClient and the TaskCanceledException exception

c# - 如何与 .net 中的另一个项目链接