2013-02-09 123 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

相關問題