2011-12-20 3 views
1

MVC 웹 응용 프로그램에서 WebClient를 통해 특정 컨트롤러에 POST를 호출합니다. 이 호출이 UTF32로되어 있어야합니다. 그러나 UTF32로이 작업을 수행 할 때마다 작동하지 않습니다. 그것은 오류 500을 반환합니다. UTF8로 전환하면 정상적으로 작동합니다.MVC의 UTF8이 아닌 UTF32의 오류 500

매개 변수 사전 매개 변수에 대한 널 (null) 항목이 포함 된 'facebookID' '선택 System.Int32'비 nullable 형식의 :

var name = SettingsManager.GetScopeAttribute("[Map.Options]", "Name"); 

using (var client = new WebClient()) 
{ 
    //client.Encoding = Encoding.UTF8; 
    client.Headers.Add("Content-Type", 
        "application/x-www-form-urlencoded; charset=utf-32"); 
    client.UploadData(url, Encoding.UTF32.GetBytes("facebookID=" 
    + IngamableCommunicator.FacebookProfileID 
    + "&name=" 
    + name 
    + "&content=" 
    + File.ReadAllText(mapPath))); 
} 

서버보고이 문제 :

여기 내 UTF32 코드입니다 'FlamefusionEntertainment.Areas.Scavenius.Controllers.MapCloudController'에 'System.Web.Mvc.ActionResult SubmitMap (Int32, System.String, System.String)'메서드가 있습니다. 선택적 매개 변수는 참조 유형, 널 입력 가능 유형 또는 선택적 매개 변수로 선언되어야합니다.

내가 UTF8로 데 문제는 내가 특별한 문자 (보이지 않는 공간 등)이 있기 때문에 데이터가 실제로 통해 갈 때 엔티티 프레임 워크를 통해 Microsoft SQL 데이터베이스에 저장 될 때, 그것은 잘못이다.

검색 한 데이터가 다소 잘못되었습니다. 일부 줄 바꿈이 없으며, 일부 공백은 없습니다.

+0

500 오류가 발생하는 예외는 무엇입니까? 오류 세부 사항은 무엇입니까? – Oded

+0

그게 문제 야. 그것은 심지어 컨트롤러를 실행하지 않습니다. 컨트롤러의 첫 번째 줄에있는 첫 번째 중단 점에도 없습니다. –

+0

그리고 이벤트 로그는 무엇을 말합니까? – Oded

답변

0

MVC가 UTF32 요청을 분명히 지원하지 않기 때문에 그 사실을 알았습니다. Damien이 지적했듯이 UTF32와 UTF8은 내용면에서 차이가 없습니다. 따라서 UTF8로 전환하면 모두 작동했습니다.

나는 HttpUtility 클래스의 UrlEncode 함수를 사용하여 양식 데이터 변수를 인코딩했기 때문에 그 사실을 알았습니다. 대신, UrlEncodeUnicode 함수를 사용해야합니다.