我将Orchard部署到Azure云服务(webrole),而不会对官方稳定版本进行任何代码更改。然而,当我导航到新部署的Orchard云服务(webrole)时,我看到了一个带有Could not load file or assembly 'Microsoft.WindowsAzure.ServiceRuntime, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified
的YSOD。
作为一种解决方案,如果我启用Local Copy=True(即修改源),那么这个特定的YSOD会被msshrtmi
的另一个YSOD取代。但更重要的是,我能够部署预先构建的下载的Orchard Azure(1.7,基于相同的GIT src标签预先构建),没有任何问题,所以我宁愿解决根本问题,也不愿陷入变通办法的兔子洞,远离官方来源。
我是如何遇到这个问题的:
- 从GIT下载源(http://orchard.codeplex.com/SourceControl/latest,我使用了
commit 5e0c26f73cf5
,) - 运行
ClickToBuildAzurePackage.cmd
脚本 - 编辑
buildazureStageServiceConfiguration.cscfg
以放入连接字符串,指向真实的Azure存储帐户(与本地存储相比) - 通过windowsazure.com门户将
buildazureStage
中的两个文件部署到Azure - 导航到站点(例如:http://OrchardTest.cloudapp.net)
- 享受死亡的黄色屏幕:(
我们的本地构建系统:
- Windows 8,x64
- VS2012.3
- Azure SDK 1.7、1.8、2.0
问题:
是否有人成功部署到Azure?有什么想法可以解决这个问题吗?
在Azure服务运行时上永远不应该需要CopyLocal True。它会自动包含在包中,由您的云服务项目(在本例中为Orchard.Azure.CloudService)定义。实际上,我可以想象,如果bin包含与Azure包构建时不同版本的服务运行时,CopyLocal True可能会导致问题。
Orchard Azure使用Azure 2.0库。它显示您已经安装了2.0 SDK,因为您可以编译Orchard.Zure.CloudService项目来制作一个包。云服务项目对每个版本的Azure工具都有不同的项目指南,因此如果没有v2.0 SDK,它将是一个未知的项目类型。然而,随着你的Orchard网站采用ServiceRuntime v1.7,你的本地环境似乎出现了问题,因为它仍然应该与v2.0一致。
打开Orchard.Azure.sln时,请检查Orchard.Azure.Web项目中Microsoft.WindowsAzure.ServiceRuntime引用上的"属性"。Visual Studio在该引用中列出的版本是什么?应该是2.0.0版本。如果没有,我最好的建议是重新安装2.0库。
您定义的部署步骤在没有YSOD的情况下工作得很好。就在写这篇文章之前,我成功地尝试了它;它没有复制你的问题。