2014-03-19 6 views
1

이상하게, 이것은 로컬로 작동하지만이 푸른 웹 사이트에 배포 할 때이 Servicestack

푸른에 실패 POST 변수

은하지 않는 날짜 시간 문제를 게시 :

name=Test&venue=1&fromDate=26%2F06%2F14&toDate=01%2F07%2F14&eventType=1 

나는 그것을 다음 게시하는 경우 작품 :

name=Test&venue=1&eventType=1 

그래서 날짜 형식과 관련이 있어야합니다.

요청시 데이터 유형은 DateTime입니다.이 문자열을 작동하도록 설정하면 request.ConvertTo<Model>을 호출 할 수 있으며 예상대로 모든 데이터가 전달됩니다. 나는 단지 fromDate와 toDate를 요청시 문자열로 설정하고 싶지 않습니다.

왜이 작업이 실패하는지 아는 사람이 있습니까?

답변

2

세계화 문제로 보입니다. Azure 서버는 en-US 문화권을 사용하며 구문 분석을 위해 mm/dd/yy 형식의 날짜가 필요합니다.

그러나 영국 날짜 형식 dd/mm/yy을 사용하고 있으므로 문화는 en-GB입니다. 개발 머신은 이미 로케일 en-GB을 사용하도록 설정되므로 로컬에서 테스트 할 때 아무런 문제가 없습니다.

<configuration> 
    <system.web> 
     <globalization uiCulture="en-GB" culture="en-GB" /> 
    </system.web> 
</configuration> 

또는 당신은 global.asax에서 런타임에 수행 할 수 있습니다 :

당신은 당신의 web.config의 문화를 지정할 수 있습니다

public void PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB"); 
} 

또는 ServiceStack.Text이 DateTime 직렬화 복원 방법은 수정할 수 있지만 그 접근법을 추천하지 않는다.

JsConfig<DateTime>.DeSerializeFn = date => DateTime.ParseExact(date, "dd/MM/yy", CultureInfo.InvariantCulture); 

희망하는 데 도움이 다음 AppHostConfigure 방법에서.

+0

web.config에 추가하면 작동하는 것 같았습니다 - 건배 du – iwayneo

+0

@iwayneo Awesome :) – Scott