在Windows Azure ASP.NET MVC3 web应用程序中呈现Spark视图

在Windows Azure ASP.NET MVC3 web应用程序中呈现Spark视图,azure,spark-view-engine,Azure,Spark View Engine,我在ASP.NET MVC3中使用Spark 1.5视图引擎构建了一个web应用程序,在本地开发机器上运行良好,但在Windows Azure上托管时,它找不到Spark视图。我得到以下标准错误屏幕: The view 'Logon' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Accoun

我在ASP.NET MVC3中使用Spark 1.5视图引擎构建了一个web应用程序,在本地开发机器上运行良好,但在Windows Azure上托管时,它找不到Spark视图。我得到以下标准错误屏幕:

The view 'Logon' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Account/Logon.aspx
~/Views/Account/Logon.ascx
~/Views/Shared/Logon.aspx
~/Views/Shared/Logon.ascx
~/Views/Account/Logon.cshtml
~/Views/Account/Logon.vbhtml
~/Views/Shared/Logon.cshtml
~/Views/Shared/Logon.vbhtml
Account\Logon.spark
Shared\Logon.spark
在我看来,Spark搜索的文件夹与WebForms/Razor搜索的文件夹不同(因为没有~/Views前缀),但我找不到Spark中的配置位置

我已尝试将以下内容添加到启动代码中:

settings.AddViewFolder( ViewFolderType.VirtualPathProvider,new Dictionary<string, string> { { "virtualBaseDir", "~/Views/" } } );
settings.AddViewFolder(ViewFolderType.VirtualPathProvider,新字典{{{“virtualBaseDir”,“~/Views/”});

……但没有变化。我忍不住觉得我遗漏了一些显而易见的东西。

你不需要添加一个
~/Views/
虚拟路径提供程序,这是按照惯例自动发生的,上面的搜索路径只是两个视图引擎(Razor和Spark)的输出略有不同。Spark的根视图路径为
Views
,当它显示
Account\Logon时,它已经存在于
Views
文件夹中

我有一种感觉,当您打包和部署时,您的spark视图实际上并没有被复制到Azure。这类似于MVC3 DLL出现之前,您必须将它们设置为本地复制,以确保Azure能够访问它们

如果将Azure包重命名为.zip文件并打开它以查看视图是否已作为内容的一部分包含。如果没有,请尝试在解决方案资源管理器中高亮显示其中一个Spark文件并检查属性。将
复制到输出目录
设置为
始终复制
,然后构建并重新打包Azure项目

项目中的本地
bin
文件夹现在也应该有一个视图文件夹,其中包含Spark视图以供验证

试着上传那个软件包,看看它是否奏效

希望有帮助,

罗伯

罗伯-谢谢你的指点。您的做法是正确的,因为Spark文件没有被复制到Azure,但为了解决这个问题,我必须将每个Spark文件的构建操作设置为Content(添加Razor视图时,构建操作默认设置为Content,但添加Spark视图时,构建操作设置为None)。很高兴我完成了这件事——我害怕不得不降级到Razor;0).对不起,kenxl,我实际上知道
构建操作
必须设置为
内容
,并打算这么说,但出于某种原因我忘记了。很高兴你找到了那部分。抢劫