Umbraco根站点和ASP.NET MVC应用程序在子目录中

时间:2017-11-30 15:43:29

标签: asp.net asp.net-mvc iis umbraco umbraco7

我试图在Umbraco站点的子目录中设置ASP.NET MVC应用程序。这个新的ASP.NET MVC应用程序将作为虚拟应用程序运行。 例如,Umbraco站点位于www.domain.com,另一个MVC应用程序位于www.domain.com/app。

我试过这个方法:Umbraco Child MVC Application (Virtual Directory) - Could not load file or assembly Umbraco.ModelsBuilder

它有效但有一些问题。

  1. 放置在/ media部分中的所有图像将不再呈现。
  2. / umbraco路线失败,因此我们无法访问CMS。
  3. 没有任何错误消息,只是'由于发生了内部服务器错误,因此无法显示页面'当我试着去&umbraco'路由。

    请你告诉我有什么问题或者如何在Umbraco的子目录中创建应用程序作为虚拟应用程序?

    Umbraco版本是7.7.1。

    还有一个注意事项--Umbraco托管在Azure上。

    谢谢!

1 个答案:

答案 0 :(得分:0)

问题是web.config设置是继承的。因此,如果您的Umbraco安装位于/ wwwroot目录中并且您的虚拟应用程序位于/ wwwroot / app中,则将继承Umbraco安装的web.config设置。它可能会导致重大问题。

您会看到一些建议,将您的Umbraco的<system.web><system.webServer>部分包装在<location>标记中。正如您所提到的,问题在于这样做会阻止某些Umbraco子文件夹的继承,这会破坏/ media和/ umbraco CMS门户等内容。

因此,您需要在/ app的web.config文件中覆盖有问题的web.config设置。这对我有用:

  1. <appSettings>代码之间添加<remove key="owin:appStartup" />
  2. <system.web><membership><providers>部分,请务必添加<clear />作为您的第一个孩子。这样做会删除继承的Umbraco.Web.Security.Providers.MembersMembershipProvider。因为如果ASP.NET找不到该类,它会向您显示异常。
  3. 同样,在您的<system.web><roleManager><providers>部分中,出于同样的原因,添加<clear />作为您的第一个元素。
  4. <system.web><compilation><assemblies>中,添加<remove assembly="Umbraco.ModelsBuilder"/>。否则,您的应用程序将无法找到该程序集时进行barf。
  5. 在,添加<remove name="UmbracoModule" /><remove name="ClientDependencyModule" /><remove name="ImageProcessorModule" />
  6. 应该这样做。但要点是找到Umbraco的web.config文件中加载的Umbraco程序集,这些程序集是特定于Umbraco的,然后在虚拟应用程序的web.config中删除它们,以防止继承和导致的“未找到程序集”错误。