2016-09-26 1 views
1

그러나 나는 this question과 같은 상황에 해당합니다. 그러나이 차이점은 공급 업체 웹을 사용하는 동안 Stream이 null 인 경우 기존 질문에 FaultException을 던질 수있는 서버 코드에 대한 액세스 권한이 있다는 것입니다. 반환하는 서비스 Stream.Null 웹 서비스는 null입니다.Null Checking Stream.Null

우리는 공급 업체에 결함을 던지기 위해 방법을 변경하도록 요청했지만 공급자가 제공 한 이유는이를 소모하는 기존의 다른 시스템이 있고 Stream.Null에서 변경하면 잠재적으로 다른 시스템을 손상시킬 수 있다는 것입니다.

아무도 나에게 Stream에서 Null Checking을 수행하는 방법을 가르쳐 줄 수 있는지 궁금합니다. Null please?

나는 == null을 시도했으며 작동하지 않는 것 같습니다. 웹 서비스는 WCF 방향의 웹 참조를 사용하여 바인드됩니다.

업데이트
나는 WCF를 통해 Stream.Null를 반환하면됩니다 것으로 나타났습니다있는 CanSeek = 글쎄, 적어도 내 공급 업체로부터 반환되는 것입니다 아래 (주석 중 하나에 언급 무엇에 따라 (거짓 웹 서비스) .WCF에서 반환 된 모든 스트림이 CanSeek = false이고 길이를 찾을 수 없음을 의미합니까?

답변

2

WCF를 사용하고 있으므로 스트림에서 읽지 않고 길이를 확인할 수 없습니다. , 대신 스트림에서 바이트를 읽어서 비어 있는지 확인할 수 있습니다.

var isEmpty = streamFromWcf.ReadByte() == -1; 

Stream.Null 스트림인지 여부는 알 수 없지만 비어 있습니다. 요구 사항에 따라 실제로는 null 스트림인지 여부를 나타내는 스트림과 함께 부울을 보내려고 할 수 있습니다.

+1

Thanks @GhostCat 코드 예제를 추가했습니다. –

1

스트림의 Length을 확인하는 것이 좋습니다. 값이 0이면 스트림이 비어 있습니다.

+0

개체가 null 인 경우 던지지 않습니까? – Noctis

+0

@Noctis null 일 경우 항상 0을 반환합니다. –

+0

좀 더 유용한 정보는 스트림과 길이에 관해서 여기에서 찾을 수 있습니다 : [그래서 질문] (http://stackoverflow.com/q/3373579/1698987) – Noctis