2017-09-27 34 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

相关问题