我试图在Umbraco站点的子目录中设置ASP.NET MVC应用程序。这个新的ASP.NET MVC应用程序将作为虚拟应用程序运行。 例如,Umbraco站点位于www.domain.com,另一个MVC应用程序位于www.domain.com/app。
它有效但有一些问题。
没有任何错误消息,只是'由于发生了内部服务器错误,因此无法显示页面'当我试着去&umbraco'路由。
请你告诉我有什么问题或者如何在Umbraco的子目录中创建应用程序作为虚拟应用程序?
Umbraco版本是7.7.1。
还有一个注意事项--Umbraco托管在Azure上。
谢谢!
答案 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设置。这对我有用:
<appSettings>
代码之间添加<remove key="owin:appStartup" />
。 <system.web><membership><providers>
部分,请务必添加<clear />
作为您的第一个孩子。这样做会删除继承的Umbraco.Web.Security.Providers.MembersMembershipProvider。因为如果ASP.NET找不到该类,它会向您显示异常。 <system.web><roleManager><providers>
部分中,出于同样的原因,添加<clear />
作为您的第一个元素。 <system.web><compilation><assemblies>
中,添加<remove assembly="Umbraco.ModelsBuilder"/>
。否则,您的应用程序将无法找到该程序集时进行barf。 <remove name="UmbracoModule" /><remove name="ClientDependencyModule" /><remove name="ImageProcessorModule" />
应该这样做。但要点是找到Umbraco的web.config文件中加载的Umbraco程序集,这些程序集是特定于Umbraco的,然后在虚拟应用程序的web.config中删除它们,以防止继承和导致的“未找到程序集”错误。