2012-03-05 137 views
2

我們正在開發將在Windows Azure上託管的ASP.NET MVC Web應用程序。在開發過程中我們已經部署了幾次應用程序,沒有任何問題。實際上,這個過程的順利進行實際上令人驚訝。然後,當我們部署應用程序進行beta測試時,每當我們嘗試導航到網站的基本url時,我們都會收到403 Access Denied錯誤。如果我們嘗試導航到網站的各種控制器和操作之後,我們將獲得404資源找不到錯誤。Azure ASP.NET MVC Web.Config部署問題

我們注意到的另一個奇怪的事情是,我們將認證重定向頁面定義爲/ Access/SignIn而不是默認的帳戶/登錄。在開發機器上一切正常,我們被重定向到/ Access/SignIn,但是當發佈到Azure時,我們看到我們正被重定向到/帳戶/登錄。這讓我們認爲web.config文件存在問題。

我們在Azure部署上啓用了遠程桌面,只查看了web.config文件,發現它幾乎完全是空的!那裏唯一的設置是machineKey。我們手動將web.config從我們的開發機器中的一個複製到Azure虛擬機實例,並且從此開始一切工作。

什麼在世界上會使部署消滅web.config文件?我們如何防止這種情況發生,因爲我們無法在每次部署更新時手動更新web.config文件?

+0

構建cspkg時是否正在執行任何配置轉換? – 2012-03-05 16:29:46

+0

我會說實話,我甚至不知道這是可能的!除非我們意外地做了一些事情,否則我不會進行任何轉換。只需確認,如果沒有定義轉換,那麼web.config應該正確地部署到Azure中? – 2012-03-05 16:38:49

+0

你是對的。 web.config應該照原樣複製。如果您導航到/bin/ /app.publish文件夾,則應找到上載到Azure的.cspkg文件。您可以通過給它擴展.zip來查看文件的內容。在cspkg中,Azure項目中引用的每個項目都有自己的zip文件(您還必須爲項目zip添加.zip擴展名)。這將允許您查看Azure包的內容,而無需上傳到Azure。這可以幫助解決這些問題。 – 2012-03-05 17:01:59

回答

2

我經常通過查看.cspkg文件的內容來解決這些問題。這使我可以避免等待Azure包上傳和初始化。以下是查看.cspkg內容的步驟:

  1. 導航到/bin//app.publish文件夾
  2. 重命名.cspkg文件.cspkg.zip。
  3. 打開.cspkg.zip。您會爲Azure項目引用的每個項目找到一個.cssx文件(這實際上是一個zip文件)。
  4. 提取您需要檢查的.cssx文件並將其重命名爲.cssx.zip
  5. 打開.cssx.zip並環視。對於WorkerRoles,請查看approot文件夾。對於WebRoles,請查看sitesroot文件夾。