将多项目MVC4解决方案部署到Azure失败

时间:2013-02-09 20:41:08

标签: asp.net asp.net-mvc git deployment azure

这是我对Azure的第二次部署。 首先是一个带有数据库的简单MVC4网站,我通过git部署。工作就像一个魅力。

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

  • 网络 - >哪个是MVC4前端
  • 模型 - >包含模型和数据库上下文
  • 后端 - > MVC4数据管理项目

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

文件夹结构: Solution文件夹包含: Web / Models / Backend / MySolution.sln

我第一次部署时,我在Projects文件夹中创建了一个git repo(因为它是一个单独的项目)。现在我的仓库在解决方案文件夹中。

我也在后端上传文件,并通过以下路径将其移至其他项目(Web):

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

这会在Azure上出现问题吗?

现在我的问题是,我如何部署此解决方案?


我在Azure中创建了一个包含Source控件的网站,并为其添加了一个SQL数据库。

我已成功将解决方案推向Azure, 但在Azure上有麻烦

  

找到解决方案......没有可部署的项目。改为部署文件。

现在


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

我完全错了吗? (我想是的)

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

谢谢, 托比

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

我设法解决了我的问题。 对不起,我正在回答我自己的问题 - 希望这不会冒犯任何人。

使用Azure网站无法实现我想要实现的目标,但使用Web角色。 如CloudCoverStructureTooBig上所示。

因此,我在Visual Studio中创建了一个新的Azure云应用程序(由Azure工具提供),其中包含一个默认的Web角色,这是我的Web前端项目。 我已经向Web角色添加了一个名为“backend”的VirtualApplication,并将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;

这对两个项目都有效。

所以,这个解决方案有效,我已经将它部署到生产中了!

新出现的问题:

  • 网站使用 git 集成,但云服务不会(这对我的工作流程来说非常糟糕)。
  • 部署大约需要30-45分钟。圣......
  • 我不得不再次发布所有内容以激活远程访问和WebDeploy功能。我希望,WebDeploy将节省部署更新的时间......因为每次我现在更新时,完整的解决方案都会在服务器上更换(在上述时间范围内)。
  • 有没有办法通过FTP访问数据?