C# 保存日期时间值不是';t在生产MVC3服务器中工作

C# 保存日期时间值不是';t在生产MVC3服务器中工作,c#,asp.net-mvc-3,datetime,C#,Asp.net Mvc 3,Datetime,这可以在我的开发机器上运行,但不能在实际的生产服务器上运行 我只是想注册一个用户,但是出生日期的格式必须是dd/mm/yyyy。例如:1980年9月28日 这在我的开发机器上运行得很好,我可以注册并且它可以正确地保存出生日期 但是,在产品服务器上运行完全相同的代码时,我得到了错误: The value '29/08/1980' is not valid for Fecha de Nacimiento (dd-mm-aaaa):. 我应该寻找什么,是什么导致日期被正确保存在我的开发机器上,但拒绝

这可以在我的开发机器上运行,但不能在实际的生产服务器上运行

我只是想注册一个用户,但是出生日期的格式必须是
dd/mm/yyyy
。例如:
1980年9月28日

这在我的开发机器上运行得很好,我可以注册并且它可以正确地保存出生日期

但是,在产品服务器上运行完全相同的代码时,我得到了错误:

The value '29/08/1980' is not valid for Fecha de Nacimiento (dd-mm-aaaa):.
我应该寻找什么,是什么导致日期被正确保存在我的开发机器上,但拒绝在生产中正常工作

如果我将值切换到
09/28/1989
,效果很好,但由于玻利维亚的日期格式,我需要先使用日,然后使用月,然后使用年

以下是当用户单击提交按钮时运行的
[HttpPost]
操作方法:

[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);
}

}
[HttpPost]
公共操作结果寄存器(用户模型)
{
EFCityRepository cityRepo=新的EFCityRepository();
model.Cities=新列表();
foreach(城市报告中的var city.FindAllCities())
{
model.Cities.Add(新SelectListItem{Text=city.Name,Value=city.CityId.ToString(),Selected=true});
}
EFGenderRepository genderRepo=新EFGenderRepository();
model.Genders=新列表();
foreach(genderRepo.FindAllGenders()中的变量gender)
{
model.Genders.Add(新SelectListItem{Text=gender.Name,Value=gender.GenderId.ToString(),Selected=true});
}
if(ModelState.IsValid)
{
Domain.User User=Mapper.Map(模型);
user.UserRoleId=1;
user.EmailVerificationCode=SecurityHelpers.GeneratorAndomToken();
user.IsActive=true;
user.lanesspent=0;
user.GoldShopPointsSpent=0;
user.creditbalance=25;
user.GoldShopCreditBalance=0;
user.DateOfRegistry=DateTime.Now;
user.LastDateLogin=DateTime.Now;
var result=userRepo.CreateUser(用户);
if(result==UserCreationResults.Ok)
{
SecurityHelpers.SendVerificationEmail(user.Email、user.UserId、user.EmailVerificationCode);
FormsAuthentication.SetAuthCookie(model.Login,false/*createPersistentCookie*/);
返回重定向到操作(“索引”、“主页”);
}
其他的
{
开关(结果)
{
案例UserCreationResults.UserName存在:
AddModelError(“,“El nombre de usuario ya esta siendo utilizado.”);
打破
案例UserCreationResults.EmailAlreadyExists:
AddModelError(“,“Ese correo ya esta en uso.”);
打破
案例UserCreationResults.昵称ReadyExists:
AddModelError(“,”El昵称为ya esta siendo utilizado.);
打破
案例UserCreationResults.Unknown错误:
ModelState.addmodeleror(“,”Algo durante el registro.Por favor intent de nuevo.”);
打破
违约:
打破
}
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
}

在web.config中设置区域性:

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

在web.config中设置区域性:

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


哪一层出现故障?MVC还是保存到数据库?如提示所示,您是否尝试过28-08-1980?如果您包含执行保存并产生错误的代码,将会有所帮助。但是如果我不得不猜测的话,我会建议检查服务器上的区域设置-它可能没有使用与您的开发设备相同的区域设置。@Jon Skeet:错误只在生产环境中触发,因此我不能在那里设置断点以查看它实际触发的位置。如果让我猜一猜,我会说错误在ActionMetod中。哪一层失败了?MVC还是保存到数据库?如提示所示,您是否尝试过28-08-1980?如果您包含执行保存并产生错误的代码,将会有所帮助。但是如果我不得不猜测的话,我会建议检查服务器上的区域设置-它可能没有使用与您的开发设备相同的区域设置。@Jon Skeet:错误只在生产环境中触发,因此我不能在那里设置断点以查看它实际触发的位置。如果让我猜一猜,我会说错误在ActionMetod中。为什么在生产服务器中需要这样做,但在我的开发机器上,它会自动重新排序日期时间并将其正确保存到数据库?@Sergio Tapia,因为ASP.NET使用它所执行的机器的区域设置。因此,我怀疑您的开发机器配置为在控制面板中使用玻利维亚地区设置,而服务器(尤其是托管服务器)通常使用日期格式为MM/dd/yyyy的
en-US
地区设置。因此,您需要明确指定这些设置。谢谢您的时间。现在,我应该将其放在项目级别的WebConfig中,还是放在View文件夹的WebConfig中?@Sergio Tapia,放在根web.config中,而不是放在Views文件夹中。谢谢,这解决了我的问题。:)为什么在生产服务器中需要这样做,但在我的开发机器上,它会自动重新排序日期时间并将其正确保存到数据库?@Sergio Tapia,因为ASP.NET使用执行它的机器的区域设置。因此,我怀疑您的开发计算机配置为在控制面板中使用玻利维亚区域设置,而服务器(特别是托管服务器)通常使用日期格式为MM/dd/yyyy的
en-US
区域设置。因此,您需要明确指定这些设置。谢谢您的时间。现在,我应该将其放在项目级别的WebConfig中,还是放在View文件夹的WebConfig中?@Sergio Tapia,放在根web.config中,而不是放在Views文件夹中。谢谢,这解决了我的问题。:)