웹 서비스 (ASMX)가 있고 그 중 일부는 작동하고 입력이 유효하지 않은 경우 예외를 throw하는 웹 메서드가 있습니다.ASP.NET WebService가 예외를 throw 할 때 횡설수설 문자를 반환합니다.
function GetInputErrorCallback(error)
{
$get('input_error_msg_div').innerHTML = error.get_message();
}
이 위대한 작품을 때 내 웹 메소드가 리턴 (문자열) : 위로 웹 페이지에 클라이언트 측 자바 스크립트 오류 콜백 함수에
[ScriptMethod]
[WebMethod]
public string MyWebMethod(string input)
{
string l_returnVal;
if (!ValidInput(input))
{
string l_errMsg = System.Web.HttpUtility.HtmlEncode(GetErrorMessage());
throw new Exception(l_errMsg);
}
// some work gets done...
return System.Web.HttpUtility.HtmlEncode(l_returnVal);
}
, 내 오류를 표시 , 그것은 항상 완벽 해 보입니다. 그러나 내 던져 예외에서 내 오류 메시지 중 하나가 특수 문자가 포함되어 있으면 브라우저에서 잘못 표시됩니다. 예를 들어, 오류 메시지에 다음 내용이 포함 된 경우 :
입력이 올바르지 않습니다!는
그것은이 표시됩니다 (즉, 거기에 아스키 # 146의) :
입력 €의 ™의 t이 유효 ISNA는 그건!
또는 :
는 허스커 두 좋아하세요? (ASCII 번호 252)
가된다 :
이 Hüsker Dü 좋아하세요?
<?xml version="1.0" encoding="UTF-8"?>
<ErrorMessages>
<Message id="invalid_input">Your input isn’t valid!</Message>
.
.
.
</ErrorMessages>
그리고 지금까지 페이지 인코딩에 관한 한, 내의 Web.config에, 내가 가진 :
<globalization enableClientBasedCulture="true" fileEncoding="utf-8" />
오류 메시지의 내용은 UTF-8 인코딩으로 XML 파일에서 온다 내가 disablin을 시도했습니다
Thread.CurrentThread.CurrentUICulture = m_selectedCulture;
Encoding l_Enc = Encoding.GetEncoding(m_selectedCulture.TextInfo.ANSICodePage);
HttpContext.Current.Response.ContentEncoding = l_Enc;
HttpContext.Current.Request.ContentEncoding = l_Enc;
:
또한 L10N 매개 변수를 설정하기위한 HTTP 모듈이 이 HTTP 모듈은 결과가 동일합니다.
웹 서비스에서 반환 한 값 (l_errMsg 변수)은 VS 디버거에서 제대로 표시됩니다. 클라이언트 스크립트가 보류 된 후에는 잘못 표시됩니다. 나는 응답을보기 위해 방화 광을 사용했고 특수 문자도 거기에 엉망이되었다. 그래서 나는 꽤 이상한 내 웹 메서드에 의해 반환 된 문자열 괜찮아 보이는 경우에도 그들에 특별한 문자가 있습니다. 그러나 웹 메서드에서 예외를 throw하면 해당 메시지의 특수 문자가 올바르지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?