문제는 클라이언트가 스트림으로 데이터 문자열을 보내고 있다는 것입니다. 그런 다음 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);