2010-01-31 64 views
0

我有一個編輯頁面,我想用它來允許編輯用戶詳細信息。當我更新一些用戶的詳細信息並在我的開發機器上發佈時,它會按預期工作,詳細信息將保存到數據庫中,然後我被重定向到顯示更新信息的詳細信息頁面。ASP.NET MVC - 發佈在開發機器上工作,但不在實況上

當我將站點發布到實時服務器並執行相同的操作時,它基本上不會脫離編輯頁面。頁面成功發佈和重定向的唯一時間是如果沒有任何細節從原始值改變。

這裏是張貼代碼:Windows Server 2003上

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(int id, FormCollection formValues) 
{ 
    var repo = new UserRepository(); 
    var user = repo.GetById(id); 
    try 
    { 
     double value; 
     foreach(var stat in user.Stats) 
     { 
      var rawValue = formValues[stat.Name]; 
      if (Double.TryParse(rawValue, out value)) 
      { 
       stat.Value = value; 
      } 
      else 
      { 
       ModelState.AddModelError(stat.Name+"Err", "Value must be numerical."); 
      } 
     } 
     UpdateModel(user); 

     if (ModelState.IsValid) 
     { 
      repo.Save(); 
      return RedirectToAction("details", new { id = user.ID }); 
     } 
     else 
      throw new InvalidOperationException(); 
    } 
    catch 
    { 
     foreach (var issue in user.GetRuleViolations()) 
     { 
      ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage); 
     } 
     return View(user); 
    } 
} 

我+ IIS 6.0

+0

這是發佈到託管服務器,還是您完全控制的服務器?你有權訪問系統日誌嗎? – Jay 2010-02-01 02:41:08

+0

@Jay,我完全控制了服務器。我應該檢查什麼日誌? – James 2010-02-01 08:44:18

回答

3

你確定你沒有看到正確的行爲?您正在使用通用的try-catch方法,如果存在問題,它將簡單地返回視圖。假設您的repo.Save()方法失敗,沒有「規則違規」 - 那麼您只會再次看到您的視圖,因爲沒有任何特定的代碼來處理其他任何事情。

+0

@reallyJim,其實很好,ModelState.IsValid只會驗證* User *屬性而不是* User.Stats *。所以也許有內部問題,因爲沒有ModelErrors顯示任何內容。我怎麼能證實這是事實? – James 2010-02-01 08:46:10

+0

重新拋出catch塊中的異常來隔離問題。 – Jay 2010-02-01 12:55:01

+0

我想說,捕捉一個實際的異常並記錄下來 - 你可能會發現一些你不曾看到的細節。 – reallyJim 2010-02-01 16:47:30

0

你怎麼在開發機器上運行,你怎麼活機器上運行?

這可能與IIS 6處理路由的能力有關。

編輯

Windows 7中運行IIS 7個的Windows 2003運行IIS 6

這是我想你的謊言。

以下鏈接可以幫助:

http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

+0

您能否詳細說明*運行*?我通過「瀏覽器中的查看頁面」選項在VS2008中的開發計算機上運行網站。我的開發機器是Windows 7. – James 2010-01-31 21:55:00

+0

@Burt,我已經經歷過那個特定的教程,我已經設置了MVC通配符等。網站本身一旦發佈實際上是一個虛擬目錄,如果有幫助的話。 – James 2010-01-31 23:20:59

0

它看起來在嘗試更新數據時出現錯誤...可能是某種數據連接問題或數據類型錯誤?你沒有提到數據是否真的被保存,如果唯一的問題是重定向......這是什麼?

我幾乎確定數據沒有被保存到數據庫,因此我建議你仔細看看你的數據庫連接,以確保數據庫連接對發佈的網站有效。如果數據庫連接似乎是正確的,那麼驗證您輸入的數據在數據庫中是有效的。

您還可以更改代碼一點點,找出問題是否與數據庫在的情況下將用戶重定向的ModelState.IsValid返回false:

return RedirectToAction("errorpage"); 
+0

@Ricardo,我非常有信心數據庫連接不是問題,頁面填充正常,它是什麼時候發佈和更新模型是問題似乎是。 – James 2010-02-01 08:47:47

+0

看起來這是將數據保存到數據庫的問題。 – 2010-02-02 02:44:39

相關問題