2013-08-19 2 views
-1

Amazon S3 서버에 MVC 웹 응용 프로그램을 배포하는 것은 이번이 처음입니다. 웹 사이트가 브라우저에로드되었지만 등록 버튼을 클릭하면 오류가 발생합니다. 차이점은 입니다. 내 응용 프로그램 이름은 reporting.e-tale.co.uk이고 도메인은 대시 보드 .e-tale.co.uk로 설정되어 있으므로 대시 보드로 라이브로 폴더를 만들었습니다 .e- tale.co.uk 및 내 파일을 복사했습니다. 현지에서 잘 작동하고 왜 오류를 던지고 있는지 알지 못합니다.라이브 배포시 MVC 응용 프로그램의 일부가 작동하지 않습니다.

내가 잘못하고 있다면 저를 시정하십시오. 제공 할 세부 정보가 확실하지 않습니다. 해결책을 제안하기가 어려운 경우 더 자세한 정보를 제공해 드리겠습니다. 감사합니다.

'/'애플리케이션의 서버 오류입니다.

개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

설명 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

소스 오류 :

처리되지 않은 예외가 현재 웹 요청을 실행하는 동안 생성되었습니다. 예외의 출처와 위치에 관한 정보는 아래의 예외 스택 추적을 사용하여 식별 할 수 있습니다.

스택 추적 :

[NullReferenceException이 :. 개체 참조가 개체의 인스턴스에 설정되지] reporting.e_tale.co.uk.Controllers.AccountController.Register() +255 lambda_method (클로저 ControllerBase , Object []) +78 System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) +263 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 매개 변수 2 개) +38 System.Web.Mvc. <> C_ DisplayClass15.b _12() +128 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter 필터 ActionExecutingContext preContext, Func을 1 continuation) +826106 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func 1 계속) 826,106 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter 필터 , ActionExecutingContext preContext, Func을 1 continuation) +826106 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList 1 개 필터 ActionDescriptor actionDescriptor, IDictionary`2 파라미터) 314 System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext 문자열 actionName) 825,328 System.Web.Mvc.Controller.ExecuteCore() +159 System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) +335 System.Web.Mvc. <> c_ DisplayClassb.b _5() +62 System.Web.Mvc.Async. <> c_ DisplayClass1.b _0() +20 System.Web.Mvc. <> C_ DisplayClasse.b _d() +54 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 469 (IExecutionStep 단계, 부울 & completedSynchronously) + 375

버전 정보 : Microsoft.NET Framework 버전 : 4.0.30319; ASP.NET 버전 : 4.0.30319.1008

계정 컨트롤러 (등록)

 /// <summary> 
    /// GET: /Account/Register 
    /// Action account Register. 
    /// </summary> 
    /// <returns></returns> 
    [AcceptVerbs(HttpVerbs.Get)] 
    public ActionResult Register() 
    { 
     var myViewData = new RegisterForm 
     { 
      Person = new Person 
      { 
       CreatedAt = DateTime.Now, 
       AppellationId = 
        _appellationRepository.GetAppellationByDescription(
         "Mr").Id, 
       CountryId = 
        _countryRepository.GetCountryByName(
         "United Kingdom").Id, 
       CorporationId = _corporationRepository.GetCorporationByName(
       "Samsung").Id 
       //ManufacturerId = _manufacturerRepository.GetManufacturerByName(
       //"Samsung").Id 
      }, 
      User = 
       new User 
       { 
        CreatedAt = DateTime.Now, 
        Guid = Guid.NewGuid().ToString("N") 
       } 
     }; 

     myViewData.Appellations = new SelectList(_appellationRepository.GetAllAppellations().ToList(), "Id", 
               "Description", myViewData.Person.AppellationId); 
     myViewData.Countries = new SelectList(_countryRepository.GetAllCountries().ToList(), "Id", "Name", 
               myViewData.Person.CountryId); 
     myViewData.Corporations = new SelectList(_corporationRepository.GetAllcorporations().ToList(), "Id", 
               "Description", myViewData.Person.CorporationId); 
     //myViewData.Manufacturers = new SelectList(_manufacturerRepository.GetAllManufacturers().ToList(),"Id", 
     // "Description",myViewData.Person.ManufacturerId); 
     myViewData.PasswordLength = MembershipService.MinPasswordLength; 

     return View(myViewData); 
    } 
+0

오류를 나타내지 마십시오. "그러나 오류가 있습니다"라는 질문을 어떻게 알 수 있습니까? 임의의 제안을 던질 수는 있지만 오류가 무엇인지 알려주지 않는 한 도움이되지 않습니다. –

+0

@SimonWhitehead 설정에서 사용자 정의 오류를 설정했지만 오류가 발생합니다. 제 편집 된 게시물을 참조하십시오 – 62071072SP

+0

코드에 'null'개체가 있습니다. 'AccountController'의'Register()'액션 메소드를 보여 주면 우리가 진단 할 수 있도록 도와 줄 수 있습니다. 아마 당신의 로컬 데이터는 예상대로이지만 라이브 데이터베이스는 당신이 거기에 있기를 기대하고있는 데이터가 부족합니다. –

답변

3

코드는 따라서 .. 문제 매우 방어하지 않습니다.

AccountControllerRegister() 방법에는 null 개체가 있습니다. 그게 무엇일까요?

다음 중 하나 :

_appellationRepository.GetAppellationByDescription("Mr") 
_countryRepository.GetCountryByName("United Kingdom") 
_corporationRepository.GetCorporationByName("Samsung") 

이 데이터를 확인하고 저장소가 실제로 데이터를 반환되어 있는지 확인합니다. null 개체 (위의 각 호출 후에 .Id을 사용하여 수행)에서 속성을 확인할 수 없습니다. 의견에서 말했듯이 실제 데이터베이스에는 로컬 데이터베이스에 들어있는 모든 데이터가 들어 있지 않기 때문일 수 있습니다. 그것들이 1 대 1과 일치하는지 확인하고 거기에있을 때 ... 방어 메커니즘을 제자리에 두십시오! 예 :

var country = _countryRepository.GetCountryByName("United Kingdom"); 

if (country == null) 
    // Log the error or give a more descriptive error 
+1

네가 맞아. 나는 새 테이블을 만들었어. 회사에 살고있는 어떤 데이터도 가지고 있지 않은데, 데이터를 삽입 한 후에 나는 다른 오류를 얻고있다. 나의 편집 된 포스트를 보아라. – 62071072SP