2010-05-20 1 views
4

웹 서비스 메서드가 라인 형식의 문자열 값을 반환하도록 만드는 방법은 무엇입니까?웹 서비스 메서드가 라인 형식의 문자열 값을 반환하도록 만드는 방법은 무엇입니까?

내 웹 서비스 메소드는이

[WebMethod] 
public string GetSomeLines() 
{ 
    System.Text.StringBuilder builder = new StringBuilder(); 
    builder.AppendLine("Line1."); 
    builder.AppendLine("Line2."); 
    builder.AppendLine("Line3."); 
    return builder.ToString(); 
} 

하지만 웹 브라우저 나 델파이/C#을 소비자에서 결과를 얻을 때 이렇게 될 것 같습니다

Line1. Line2. Line3. 

내가 예상 한 반면 다음을 참조하십시오 :

Line1. 
Line2. 
Line3. 

StringBuilder 또는 String Array를 반환 할 수도 있습니다. 개미가 문자열 결과로 이것을 만드는 방법이 있는지 아는 것.

도움 주셔서 감사합니다.

답변

4

StringBuilder의 AppendLine 메서드는 기본 줄 종결자를 추가 된 문자열 끝에 추가합니다. 기본 행 종결자는 Environment.NewLine 등록 정보의 현재 값으로, Unix 이외의 플랫폼에서는 "\ r \ n", Unix 플랫폼에서는 "\ n"입니다. 따라서 귀하의 WebMethod가 반환하려고하는 것은 다음과 같습니다.

"Line1. \ r \ nLine2. \ r \ nLine3. \ r \ n".

그러나, 반환 값은 절단함으로써 SOAP 사양에 따라 직렬화 \ "R"은, 그 결과는 약간 다르게 보인다 "... 호선 \ nLine2 \ nLine3 \ n"

.

서비스 소비자가 Windows 플랫폼에서 실행되는 경우 단일 "\ n"문자를 가비지로 무시할 수 있습니다. 예상 솔루션 :

  1. 다른 형식으로 인코딩 값을 인코딩합니다. 다음과 같이 바이트 배열로 변환합니다. return builder.ToString().ToCharArray();

  2. NewLine을 호출자가 제공 할 수있는 다른 문자열로 바꿉니다. BR 태그에 넣습니다. return builder.Replace(Environment.NewLine, "<br/>").ToString();

  3. 모든 줄이 분리 된 줄 또는 다른 컨테이너의 배열을 반환합니다.

+0

감사합니다. SlavaGu, 맞습니다. 정확히 여기 무슨 일이 일어나고 있는지, 좋은 설명을 해 주셔서 감사합니다. "사용할 준비가 된"문자열 결과를 사용하여이를 수행 할 수있는 방법이 없다고 생각합니다. 다른 줄 바꿈을 사용해야합니다. 하지만이 대답을 받아 들일 것입니다. 감사 :-) –

1

각의 끝에 '\ 연구 \ n을'문자를 추가 할 수 있습니다 추가 :

builder.Append (". 1 호선 \ 연구 \ n을");

또는 같이 말했다 : appendLine

builder.AppendLine ("1 호선.")

그리고 그 이후에는 소비자에 따라 을 '\ r \ n'을 다른 새로운 줄 문자열로 바꿀 수 있습니다. 브라우저 용

<br/> 태그.

+0

+1 감사합니다. Alex Pacurar! –

0

environement.newline을 추가하는 동안 사용하십시오.

관련 문제