2010-02-08 4 views
1

문제는 클라이언트가 스트림으로 데이터 문자열을 보내고 있다는 것입니다. 그런 다음 WCF가 정상화 (CRLF의 CR 부분 제거)하고 특정 문자열에 대한 서버와 클라이언트 간의 해시 불일치가 발생합니다. WCF - CRLF의 스트림 매개 변수가 누락되었습니다.

public void SomeWcfContract(Stream input) 
    { 
     try 
     { 
      string processed = ReadStream(input); 
      WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK; 
     } 
     catch (Exception ex) 
     { 
      WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError; 
     } 
    } 


    private string ReadStream(Stream input) 
    { 
     string output; 

     using (var reader = new StreamReader(input, Encoding.UTF8)) 
     { 
      output = reader.ReadToEnd(); 
     } 

     return output; 
    } 

나는 여기에 대한 게시물을 읽을 : XML deserialization 'standardising' line endings, how to stop it? (.NET)

그것은 내가 가지고있는 동일한 문제입니다하지만 난 WCF의 표준 XmlSerializer를 사용합니다. 내 자신의 XmlSerializer 구현을 만들어야합니까, 아니면 어떻게 든 "수정"을 설정에 추가 할 수 있습니까?

이 무슨 일하는 WCF가 Message에 (CRLF)에서 캐리지 리턴의 모든 인스턴스를 입력 스트림을 직렬화 때 제거 및 LF로 대체되어있는 WCF XmlDictionaryReader와 아주 불쾌한 버그 것 같다. this에 따르면 WCF의 알려진 버그입니다. 나는 그것을 포장 또는 뭔가처럼되지 않는이 매개 변수를 일으킬 것이기 때문에 의미가 추측

[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare, 
     UriTemplate = UriTemplates.SomeWcfContract), OperationContract] 
    void SomeWcfContract(Stream vcard); 

: https://connect.microsoft.com/wcf/feedback/details/532196/xmldictionaryreader-is-normalizing-incoming-stream-removing-cr-of-crlf#details

답변

1

이 그 문제를 해결하기 위해 보인다 편집 나는 마이크로 소프트에 버그로보고 그.

관련 문제