2017-03-08 95 views
0

作爲數據網格的一部分,我希望用戶能夠上傳文件。我通過jquery ajax調用服務器完成了這個任務。這裏是我的Ajax調用:爲什麼在服務器上發送ajax請求時發生404錯誤,但本地不發送?

var formData = new FormData(); 
formData.append("file", Data.File); //Data.File is a File object from a file input 
$.ajax({ 
    type: "POST", 
    url: "@Url.Action("UploadFile")", 
    data: formData, 
    contentType: false, 
    processData: false 
}); 

而且,這裏是我的控制器操作的簽名:

[HttpPost] 
public IActionResult UploadFile() 

當我通過IIS快速測試這個地方,它完美的作品。但是,當我發佈到IIS Web服務器時,它只會給我404錯誤。我研究了IIS端的可能原因,但他們似乎都處理大文件。我正在測試的文件並不大;所有我測試過的都在1 MB以下。我還有另一個頁面,允許通過ajax進行文件上傳,並且該頁面在本地或Web服務器上不會遇到任何問題。

這不是在這個頁面上唯一的ajax調用,但它是唯一的失敗。

+0

那麼請求的URL是什麼?應該是什麼?他們有什麼不同?檢查您的瀏覽器*網絡*控制檯 – Phil

+0

以下是它請求的URL:http:// [site]/[subdomain]/DataGrid/UploadFile。這正是它應該的。 – greenjaed

+0

那*應該*工作?如果你發送一個cURL請求,它是否返回404狀態〜'curl -v -X POST -H「Content-Type:」「http:// [site]/[subdomain] /DataGrid/UploadFile」 – Phil

回答

1

起初,我很困惑,因爲正如我在原文中指出的,我有一個頁面正在執行與我目前遇到問題完全相同的操作。然而,經過了很長時間,我意識到這個動作可能會返回404,因爲拋出了一些異常。所以我做了理性的事情,並在我的代碼中放置了一個try-catch塊,並返回了任何錯誤。

那時候我意識到儘管調用是相同的,但我在後端做了一些不同的事情。我忘記了該網站依賴於我在本地安裝的軟件,但不在網絡服務器上。在服務器上安裝該軟件後,文件正常上傳。

tl; dr:由於Web服務器上缺少軟件而引發異常,因此返回了404。

+0

聽起來像您的異常處理程序正在返回錯誤的響應代碼。這應該是一個*「500 - 內部服務器錯誤」* – Phil

相關問題