2017-09-27 9 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'출원

개체 참조가 개체의 인스턴스에 설정되지

설명 :.되지 않은 예외가 현재 웹 다시 실행 중에 발생한 탐구. 오류에 대한 정보와 코드에서 오류가 발생한 위치에 대한 정보는 에 대한 스택 추적을 검토하십시오.

예외 정보 : System.NullReferenceException : 개체 참조가 개체가 아닌 이 아닙니다.

로컬 서버에서는 작동 방식이 완벽하게 작동하지만 게시 후 원격 서버에 배포하는 방법을 이해하지 못합니다.

폴더는 가상 디렉터리이고 프로젝트 파일이 들어있는 폴더는 "Everyone"및 "IIS_IUSR"과 공유됩니다. 둘 다 읽기/쓰기 권한이 있습니다.

가장 일반적으로 볼 수있는 것은 무엇입니까? 임 너무 간단 그 뭔가 모르겠지만, 그냥 큰 도움이 될 것입니다 :(

올바른 방향으로 어떤 도움 무엇인지 찾을 수 없습니다.

감사합니다!

+0

적어도 "woff2"파일의 경우 IIS 구성에서 MIME 형식이 누락되었거나 잘못된 형식이어야합니다. https://stackoverflow.com/a/28955302/265165 – thmshd

+0

_NullReferenceException_은 다른 사람의 원본입니다 발행물. 아마도 일부 쿼리가 예상 데이터를 반환하지 않을 것입니다. 이것은 데이터베이스 연결 오류, 사용 권한 누락, 마이그레이션 실패 등일 수 있습니다. 무엇이 잘못되었는지를 추측 할 수 없습니다. 예외 로깅을 사용하여 로그에서 오류를 찾으십시오. – thmshd

+0

답장을 보내 주셔서 감사합니다. web.config에 추가하려고했지만 브라우저에서 로깅하는 데 예외가 있습니까? 어떻게 활성화합니까? – AxleWack

답변

0

개발 운영에 말을있다가 "개발 기계가 아닌 다른 곳에서 작동하지 않는 한 작동하지 않습니다."여기에서 코드는 테스트에서 실패합니다. 개발 상자는 원래 환경이며 정확히 어떻게 설정해야하는지, 로컬 데이터베이스는 절대적으로 올바른 데이터를 가지고 있습니다. 실제 세계는 용서가 훨씬 적습니다. 데이터베이스에서 쿼리와 같은 작업을 수행 할 때 제대로 코딩하지 않으면 프로덕션 환경이 정상적으로 작동합니다.

즉, 데이터베이스에서 항목을 쿼리 할 때 쿼리를 찾을 수 없을 때 쿼리해야합니다. 그것이 일 경우에도이되어야합니다. Murphy의 법에 따르면 어느 시점에 머물러 있지 않을 것이라고합니다. 쿼리에서 아무 것도 반환되지 않으면 변수는 null로 설정되고 코드에서 적절한 null 검사를 수행하지 않으면 NullReferenceException이 이와 같습니다.

단순히 NullReferenceException은 유형 인스턴스의 유효한 멤버에 액세스하려고 시도했지만 해당 인스턴스가 실제로 null로 평가되고 null에는 해당 특정 멤버가 없음을 의미합니다. 예를 들면 다음과 같습니다

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

, 당신은 그것을 할 수있다 아주 잘하지 Organization 인스턴스가 존재한다고 가정하지만 있습니다. organization.DepartmentId의 값을 가져 오려고 시도하는 경우 Organization의 인스턴스가있는 경우 완벽하게 유효하지만 organization 변수가 실제로 null 인 경우 널값은 DepartmentId이고 붐은 NullReferenceException이 아닙니다.

잠재적으로 null 일 수있는 변수가있을 때마다 해당 변수가 있다고 가정하고 이에 따라 코드를 디자인하십시오.

+0

실제로 나는 답변으로 표시 할 것입니다. - 내 게시물에 대한 주석에서 지금 언급했듯이, 그것은 데이터와 관련되어 있었으며 공동으로 _departmentRepo.FindDepartmentById '코드 라인에서 오류가 발생했기 때문입니다. 다른 2 개의 항목에 관해서는, 나는 단지 URL이 반환되는 것을 확인해야 할 것이고 확실한 이유는 그들이 발견되지 않은 이유 일 것이다. 나는 희망한다. 고마워요 @ 크리스! – AxleWack