2017-09-27 36 views
0

我看到有很多人在同一個問題上掙扎,但似乎沒有人讓我走向正確的方向 - 也許我不明白正確,或者我的情況只是有一點不同 - 我已經創建了一個完美的運行在我的本地的MVC應用程序,但一旦部署,我收到以下錯誤,在控制檯:將MVC應用程序部署到服務器後,JQuery文件404(未找到)和500(內部服務器錯誤)

無法加載資源:服務器狀態爲404 (未找到):glyphicons-halflings-regular.woff2

加載資源失敗:服務器以狀態響應404 (未找到):/ API /通知

無法加載資源:服務器的狀態爲迴應500 (內部服務器錯誤): BudgetingTool /帳號/的UserDetails SEARCHTERM =彼得+潘& _ = 1506510511716

最後一個是最重要的,因爲這是用來返回數據。它的代碼如下:

public ActionResult UserDetails(string searchTerm = null) 
     { 
      var data = UserManager.Users.FirstOrDefault(r => (r.FirstName + " " + r.LastName) == searchTerm); 
      IEnumerable<SelectListItem> rolesList = null; 
      IEnumerable<SelectListItem> organisationList = null; 
      Organisation organisation = null; 
      Department department = null; 

      if (data != null) 
      { 
       var userOrganisations = _organisationRepo.GetUserAssignedOrganisation(data.Id); 
       organisation = _repository.FindOrganisationById(data.OrganisationId); 
       department = _departmentRepo.FindDepartmentById(organisation.DepartmentId); 
       rolesList = ShowAllowedRoles(data.Id); 
       organisationList = 
        _repository.GetOrganisationsInHierarchyOrder(0,0,0).Select(r => new SelectListItem 
        { 
         Selected = userOrganisations.Any(x => x.OrganisationId == r.OrganisationId) ? true : false, 
         Text = r.Name, 
         Value = r.OrganisationId.ToString() 
        }); 
       //SelectedOrganisations = OrganisationList.Where(x => x.Selected == true).ToList().Select(r=> new List<string>{ r.Value}); 
      } 
      else 
      { 
       organisationList = _repository.GetOrganisationsInHierarchyOrder(0, 0, 0).GroupBy(m => m.Name).Select(y => y.First()).Select(r => new SelectListItem 
       { 
        Selected = false, 
        Text = r.Name, 
        Value = r.OrganisationId.ToString() 
       }); 
       rolesList = GetRolesList(); 
      } 

      var model = new UpdateUserInfoVM 
      { 
       Id = data == null ? string.Empty : data.Id, 
       FirstName = data == null ? string.Empty : data.FirstName, 
       LastName = data == null ? string.Empty : data.LastName, 
       Email = data == null ? string.Empty : data.Email, 
       Allowbudgetdeletion = data?.Allowbudgetdeletion ?? false, 
       LockoutEnabled = data?.LockoutEnabled ?? false, 
       //OrganisationId = data == null ? string.Empty : data.OrganisationId, 
       OrganisationId = data?.OrganisationId ?? 0, 
       Organisations = organisationList, 
       Roles = rolesList, 
       AccessFailedCount = data?.AccessFailedCount ?? 0, 
       LockoutEndDateUtc = data?.LockoutEndDateUtc, 
       AllowEditing = data.AllowEditing, 
       DistrictOrUrban = data?.DistrictOrUrban, 
       departmentId = organisation.DepartmentId, 
       DepartmentType = department.Name 
       //SelectedOrganisations = SelectedOrganisations 
      }; 

      return PartialView("_ShowUserInfo", model); 
      //return Request.IsAjaxRequest() ? PartialView("_ShowUserInfo", model) : PartialView("_ShowUserInfo", model); 
     } 

當我點擊鏈接在控制檯上的錯誤,這是顯示(因爲如果沒有通過???

服務器錯誤傳遞的值。在「/ BudgetingTool」應用

對象引用不設置爲一個對象的一個​​實例

描述:的 當前web重新執行過程中發生了未處理的異常尋求。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.NullReferenceException:對象引用不是 設置爲對象的實例。

我只是不明白它如何在我的本地工作得如此完美,而不是在發佈時再部署到遠程服務器。

該文件夾是一個虛擬目錄,包含項目文件的文件夾與「Everyone」和「IIS_IUSR」共享 - 兩者都具有讀/寫權限。

人們可以尋找的最普通的東西是什麼?我敢肯定它的東西很簡單,但就是無法找出它是什麼:(

在正確的方向任何幫助將是很大的幫助。

謝謝!

+0

至少對於「woff2」文件,這肯定是在IIS配置中缺少/錯誤的MIME類型的問題:https://stackoverflow.com/a/28955302/265165 – thmshd

+0

您的_NullReferenceException_是其他問題。可能某些查詢不會返回預期的數據,這可能是數據庫的連接錯誤,缺少權限,失敗遷移等。我們無法猜測出現了什麼問題。啓用異常日誌記錄查找日誌中的錯誤 – thmshd

+0

感謝您的答覆 - 我試圖將其添加到我的web.config,但沒有區別:(是否在瀏覽器上的異常日誌記錄?如何啓用此操作以及我在哪裏查找日誌? – AxleWack

回答

0

有一個在DevOps的一種說法,這樣做:「它不工作,除非它在你的開發機器以外的其他地方工作」在這裏,你的代碼不能通過測試。開發盒是一個原始的環境,你確切地設置它應該是怎樣的,並確保你的本地數據庫具有絕對正確的數據等等。真實世界的寬容度要低得多,當你從數據庫中查詢東西時,如果你沒有正確編碼,你的生產環境會讓你感覺良好。

也就是說,無論何時您從數據庫中查詢某些內容,都必須說明您查詢的內容未找到。即使應該在那裏,墨菲定律說它不會在某個時刻。如果查詢沒有返回任何內容,則該變量將設置爲null,如果您未在代碼中進行適當的空檢查,則會得到像這樣的NullReferenceException

簡而言之,NullReferenceException意味着您試圖訪問類型實例的有效成員,但該實例實際評估爲null,並且null沒有該特定成員。例如:

organisation = _repository.FindOrganisationById(data.OrganisationId); 
department = _departmentRepo.FindDepartmentById(organisation.DepartmentId); 

在這裏,你假設Organization實例存在,但它很可能不是。如果您有Organization的實例,試圖檢索organization.DepartmentId的值是完全有效的,但如果您的organization變量實際上爲null,那麼null沒有DepartmentId成員和boom:NullReferenceException

任何時候如果你有任何可能爲空的變量,假設它會相應地設計你的代碼。

+0

我實際上會將你的標記作爲答案 - 因爲正如我現在在對我的文章發表的評論中提到的那樣,它與數據相關 - 並且偶然地,錯誤發生在_departmentRepo.FindDepartmentById'代碼行上。至於其他兩個項目,我只需要檢查哪些URL正在返回,我相信這將是爲什麼他們沒有被發現....我希望。謝謝@Chris! – AxleWack

相關問題