2013-02-09 116 views
1

这是我第二次部署到Azure。 首先是一个带有数据库的简单MVC4网站,我通过git部署了该网站。像魅力一样工作。将多项目MVC4解决方案部署到Azure失败

现在我有以下内容: 包含三个项目的解决方案。

  • 页面 - >这是MVC4前端
  • 型号 - >包含模型和数据库上下文
  • 后端 - > MVC4项目数据管理

所有的项目都是MVC4(没不知道如何更好地管理模型项目)。 在我的模型项目中,我正在运行代码迁移。 后端运行在虚拟目录中:localhost:80/Backend (在localhost上完美工作) Web和后端项目都有对Models项目的引用。

文件夹结构: 解决方案文件夹中包含: 网站/型号/后端/ MySolution.sln

我第一次部署我创建了一个项目文件夹一个混帐回购协议(因为它是一个单一的项目)。现在我的回购在解决方案文件夹中。

我也上传文件在后台,它通过以下路径移动到其他项目(网络):

Directory.GetParent(HttpContext.Current.Server.MapPath("~")).ToString() + DirSeperator + "Web" + DirSeperator + "Store" + DirSeperator; 

这是要在Azure上的问题吗?

所以我现在松散的问题是,我怎么部署这个解决方案?


我已经创建了源代码管理网站在Azure和增加了一个SQL数据库给它。

我已经成功地推动解决天青, 但在Azure上还有的讯息话题

找到解决办法...没有部署项目。改为部署文件。

现在。


你对这个问题有什么好的教程吗?

我是否完全错了? (我认为是这样)

我对ASP.NET和Azure比较陌生,所以对我来说有点难理解。

感谢, 托比

+0

请包括更多信息:你怎么重定向组件?您是否为您的项目创建了可部署的依赖性文件夹? – 2013-02-09 21:32:01

+0

我甚至不知道什么是可部署依赖文件夹:(对于Web和后端项目,我已经在上下文菜单中选择了“添加引用”,并检查了我的模型项目,这就是我现在所做的全部 – 2013-02-09 22:42:24

+0

好的,如果你右键单击解决方案资源管理器中的MVC项目文件,您可以选择“添加可部署的依赖关系”,这些dll不包含在IIS .net V 4或4.5中,并且经常需要复制以供部署。但请不要专注于此。部署到Azure涉及许多检查点:例如重定向您的程序集,可能会添加依赖关系等。请阅读我包含的指南。从那里,希望你会汇聚到具体问题 – 2013-02-09 22:53:17

回答

0

我已经成功地解决我的问题。 对不起,我正在回答我自己的问题 - 希望这不会冒犯任何人。

我想实现的目标不是Azure网站可以实现的,而是通过Web角色实现的。 如在这里看到CloudCoverStructureTooBig

因此,我在Visual Studio中创建了一个新的Azure云应用程序(由Azure工具提供),并具有默认的Web角色,这是我的Web前端项目。 我已将虚拟应用程序添加到Web角色,名称为“backend”,physicalDirectory设置为我的后端项目路径。 然后我添加了一个VirtualDirectory“商店”,我可以从这两个项目中访问文件上传。

我WebRole现在看起来是这样的:

<WebRole name="MvcWebRole1" vmsize="ExtraSmall"> 
<Sites> 
    <Site name="Web" physicalDirectory="[projectpath]"> 
    <VirtualApplication name="backend" physicalDirectory="[projectpath]"> 
    </VirtualApplication> 
    <VirtualDirectory name="store" physicalDirectory="[projectpath]"> 
    </VirtualDirectory> 
    <Bindings> 
     <Binding name="Endpoint1" endpointName="Endpoint1" /> 
    </Bindings> 
    </Site> 
</Sites> 
<Endpoints> 
    <InputEndpoint name="Endpoint1" protocol="http" port="80" /> 
</Endpoints> 
<Imports> 
    <Import moduleName="Diagnostics" /> 
    <Import moduleName="RemoteAccess" /> 
    <Import moduleName="RemoteForwarder" /> 
</Imports> 

我访问(读+写)商店现在通过:

HttpContext.Current.Request.MapPath("/Store" + DirSeperator); 

,而不是

Directory.GetParent(HttpContext.Current.Server.MapPath("~")).ToString() + DirSeperator + "Web" + DirSeperator + "Store" + DirSeperator; 

它在bot上完美运行h项目。

所以,这个解决方案的工作原理,我已经部署到生产!

出现的问题:

  • 网站与混帐整合工作,但云服务不会(这是非常不好的我的工作流程)。
  • 部署大约需要30-45分钟。 Holy ...
  • 我必须再次发布所有内容才能激活远程访问和WebDeploy功能。我希望,WebDeploy将节省部署更新的时间......每当我现在更新时,整个解决方案都会在服务器上(在上述时间范围内)被替换。
  • 有没有办法通过FTP访问数据?

1

跟进编辑:我现在看到的,这更多的是与配置2项目部署。您将需要创建部署脚本

我没有做过这样的研究,但看看这些帖子:

http://blog.amitapple.com/post/38419111245/azurewebsitecustomdeploymentpart3

http://kellyhpdx.wordpress.com/2012/04/11/deploying-multiple-web-applications-to-a-single-azure-instance-and-applying-web-config-transforms-correctly/

+0

@artistandsocial,我将自己的帖子更新为更有用的线程,专门处理从git到Azure的多个项目的部署。同时,我将检查我们自己的多个项目的回购协议,并查看我们如何配置多个部署。 – 2013-02-10 16:28:31

+1

嗨。感谢您的支持。我正在使用全新的解决方案(更易于部署)。我已经了解了Azure上Web站点和Web角色之间的差异,并且我似乎无法按照我想要的方式来处理Web站点。所以我创建了一个Web角色,并会在接下来的几天尝试部署多个网站(如Kelly在第二个链接中所示)。我已经尝试了一个项目,现在它按预期工作(虽然部署非常慢 - 大约需要10分钟)。我希望现在这是正确的做法。谢谢。 – 2013-02-10 21:50:42

+0

@artistandsocial,祝你好运! – 2013-02-10 22:00:55

相关问题