#c# #asp.net-mvc-3 #iis-7.5
#c# #asp.net-mvc-3 #iis-7.5
Вопрос:
Я развернул приложение MVC3, которое хорошо работает в среде разработки, потому что формат даты на компьютере разработчика — это дд / мм / гггг. Но когда приложение было развернуто на сервере, на стороне сервера начали появляться ошибки из-за недопустимых дат, потому что на сервере формат даты — мм / дд / гггг. Теперь мой вопрос в том, нужно ли мне настраивать сервер?? или только IIS 7.0 для этого конкретного языка ??. Каким бы ни был ответ, пожалуйста, дайте мне знать, как я могу это сделать. Я работаю в Windows Server 2008 R2 и iis 7.5
Комментарии:
1. Откуда берутся даты? Как правило, вам вообще не следует использовать культуру системы при разработке веб-приложения — в конце концов, она может не совпадать с пользовательской.
2. Даты поступают из текстового ввода с помощью выбора даты в jquery, который создает формат на стороне клиента, также проверка формата на стороне клиента работает хорошо, проблема заключается в проверке на стороне сервера
3. Если входные данные получены от пользователя, вы, вероятно, должны использовать язык пользователя.
Ответ №1:
Самый простой способ убедиться, что всегда используется один и тот же язык программирования, — установить его в вашем базовом контроллере:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
Thread.CurrentThread.CurrentUICulture =
Thread.CurrentThread.CurrentCulture = new CultureInfo(1033); //en-us
}
Но более надежный подход заключается в создании нового фильтра действий:
public class UseEnglishCultureAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
Thread.CurrentThread.CurrentUICulture =
Thread.CurrentThread.CurrentCulture = new CultureInfo(1033); //en-us
}
}
И пометьте этим свой контроллер:
[UseEnglishCulture]
public class BaseController : Controller
{
}
Ответ №2:
Что вы могли бы сделать, чтобы не зависеть от языка программирования вашего кода:
-
Щелкните правой кнопкой мыши на вашем проекте и перейдите к свойствам -> анализ кода. Включите правила глобализации Microsoft и проанализируйте свой код.
-
Он будет выдавать вам предупреждения везде, где вы использовали DateTime и не указали культуру. Для тех, которые должны иметь независимый формат, добавьте
CultureInfo.InvariantCulture