2011-09-13 4 views
1

이것은 내 dev 컴퓨터에서 작동하지만 실제 프로덕션 서버에서는 작동하지 않습니다.생산 MVC3 서버에서 DateTime 값을 저장하지 않습니다.

사용자를 등록하려고하는데 생년월일은 dd/mm/yyyy이어야합니다. 예 : 28/09/1980.

이것은 내 컴퓨터에서 잘 작동하며 등록 할 수 있으며 생년월일을 올바르게 저장합니다.

하지만 제품 서버에서 동일한 코드를 실행했을 때 오류 얻을 :

The value '29/08/1980' is not valid for Fecha de Nacimiento (dd-mm-aaaa):. 

내 dev에 컴퓨터에 correctl를 저장할 수 날짜 원인이 될 수 내가 무엇을 찾고해야하고 무엇을하지만, 생산에서 잘 작동하지 않습니까?

값을 09/28/1989으로 바꾸면 볼리비아에서 날짜 형식을 지정하기 때문에 일, 월, 연도를 사용해야합니다.

[HttpPost] 
public ActionResult Register(UserModel model) 
{ 
    EFCityRepository cityRepo = new EFCityRepository(); 
    model.Cities = new List<SelectListItem>(); 
    foreach (var city in cityRepo.FindAllCities()) 
    { 
     model.Cities.Add(new SelectListItem { Text = city.Name, Value = city.CityId.ToString(), Selected = true }); 
    } 

    EFGenderRepository genderRepo = new EFGenderRepository(); 
    model.Genders = new List<SelectListItem>(); 
    foreach (var gender in genderRepo.FindAllGenders()) 
    { 
     model.Genders.Add(new SelectListItem { Text = gender.Name, Value = gender.GenderId.ToString(), Selected = true }); 
    } 

    if (ModelState.IsValid) 
    { 
     Domain.User user = Mapper.Map<UserModel, Site.Domain.User>(model); 
     user.UserRoleId = 1; 
     user.EmailVerificationCode = SecurityHelpers.GenerateRandomToken(); 
     user.IsActive = true; 
     user.LancesSpent = 0; 
     user.GoldShopPointsSpent = 0; 
     user.LanceCreditBalance = 25; 
     user.GoldShopCreditBalance = 0; 
     user.DateOfRegistry = DateTime.Now; 
     user.LastDateLogin = DateTime.Now; 

     var result = userRepo.CreateUser(user); 

     if (result == UserCreationResults.Ok) 
     { 
      SecurityHelpers.SendVerificationEmail(user.Email, user.UserId, user.EmailVerificationCode); 
      FormsAuthentication.SetAuthCookie(model.Login, false /* createPersistentCookie */); 
      return RedirectToAction("Index", "Home"); 
     } 
     else 
     { 
      switch (result) 
      { 
       case UserCreationResults.UsernameExists: 
        ModelState.AddModelError("", "El nombre de usuario ya esta siendo utilizado."); 
        break; 
       case UserCreationResults.EmailAlreadyExists: 
        ModelState.AddModelError("", "Ese correo ya esta en uso."); 
        break; 
       case UserCreationResults.NicknameAlreadyExists: 
        ModelState.AddModelError("", "El nickname ya esta siendo utilizado."); 
        break; 
       case UserCreationResults.UnknownError: 
        ModelState.AddModelError("", "Algo durante el registro. Por favor intente de nuevo."); 
        break; 
       default: 
        break; 
      } 
     } 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 

} 
+1

이 실패 계층

여기에 사용자가 제출 버튼을 클릭 할 때 실행되는 [HttpPost]의 조치 방법이다? MVC 또는 데이터베이스에 저장? 프롬프트에서 알 수 있듯이 28-08-1980을 사용해 보셨습니까? –

+0

저장을 수행하고 오류를 생성하는 코드를 포함하면 도움이됩니다. 그러나 추측해야만한다면 서버의 로케일 설정을 확인하는 것이 좋습니다. devbox와 같은 로켈을 사용하지 않을 수도 있습니다. – Jason

+0

@Jon Skeet : 오류는 프로덕션에서만 발생하므로 어디에서 실제로 중단되는지 확인할 수는 없습니다. 추측을해야한다면 오류가 ActionMetod에 있다고 말할 수 있습니다. –

답변

4

당신의 Web.config에서 재배 세트 :

<globalization culture="es-BO" uiCulture="es-BO" /> 
+0

프로덕션 서버에서 이것이 필요한 이유는 내 dev 컴퓨터에서 datetime을 자동으로 재정렬하여 데이터베이스에 올바르게 저장하는 것입니다. –

+1

@Sergio Tapia ASP.NET은 실행되는 컴퓨터의 국가 별 설정을 사용하기 때문에. 그래서 당신의 dev 컴퓨터는 제어판에서 볼리비아 지역 설정을 사용하도록 구성되어 있습니다. 서버 (특히 호스트 된 것들)는 일반적으로 날짜 형식이 MM/dd/yyyy 인'en-US' 지역 설정을 사용합니다. 이러한 이유로 명시 적으로 명시 적으로 지정해야합니다. –

+0

시간 내 주셔서 감사합니다. 이제는 프로젝트 레벨의 WebConfig 또는 View 폴더의 WebConfig에이 파일을 배치해야합니까? –

관련 문제