
미국에 있는 고객 중 모든 시간은 군용 시간으로 표시되기를 원하지만 그 밖의 모든 시간은 미국 문화로 간주됩니다.
내 global.asax에서는 미국 문화의 복사본을 만들고 GB 시간 표시를 적용하여 군사 시간이 포함된 미국 문화를 만듭니다.
내가 이 일을 하는 이유는 그것을 할 수 있는 문화를 찾을 수 없기 때문입니다. 그러나 누군가 알고 있다면 그것은 좋을 것입니다.
제가 겪고 있는 문제는 웹사이트를 IIS(버전 6)에 배포할 때 모든 것이 미국 문화로 되돌아가는 것 같습니다.
문화권을 변경하는 방법을 찾아보니 ASP.NET 탭 -> 구성 편집 -> 응용 프로그램 탭에서 설정을 찾았습니다.
기본값은 af-ZA입니다.
이러한 문화 무시를 비활성화할 수 있는 옵션이 없는 것 같은데 어쨌든 af-ZA가 옳다고 생각하지 않습니까?
IIS가 ASP.NET에 프로그래밍 방식으로 설정된 문화권을 재정의하는 것을 방지하는 방법이 있습니까?
참고: 프로그래밍이 아닌 서버측 솔루션을 찾고 있으므로 여기에 질문합니다. 감사해요!
답변1
이것은 적어도 부분적으로 코딩 질문입니다. 기본적으로 System.Globalization의 CultureAndRegionInfoBuilder 클래스를 사용하여 새 문화권을 만들고 등록해야 합니다.
등록한 후에는 ASP.Net 응용 프로그램 설정 내에서 새로운 문화권을 선택할 수 있습니다. (또는 애플리케이션의 web.config 파일 내에서)
시작하는 데 도움이 되는 몇 가지 참고 자료는 다음과 같습니다.
http://msdn.microsoft.com/en-us/library/ms172469.aspx
http://msdn.microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder.aspx
답변2
서버와 asp.net에 더 정통한 사람과 이야기를 나눈 후 내 질문에 대한 답을 찾았습니다.
분명히 Web.config에서 애플리케이션 전반의 문화권만 설정할 수 있습니다.
페이지 요청을 처리하는 하위 스레드로 전달되지 않는 global.asax의 애플리케이션 메인 스레드에서 이를 설정하고 있었습니다.
흥미로운 점은 Visual Studio의 호스팅 프로세스를 통해 로컬 컴퓨터에서 실행할 때 모든 요청이 동일한 스레드를 통해 수행되어야 한다는 것입니다.
이것이 IIS에 문제가 있다고 믿게 만드는 이유입니다. IIS에 올려놓기 전까지는 문제가 나타나지 않았기 때문입니다.
내 솔루션: (더 적절한 솔루션을 수락함)
각 페이지 요청 스레드에 사용자 정의 문화권을 설정해야 합니다. 내 솔루션은 마스터 페이지 로드에 넣는 것이었습니다. IIS는 사용자의 설정을 재정의하지 않습니다.