I have an XmlTextReader, and I pass it in a System.Net.ConnectStream. If I enter the debugger, I can see that ConnectStream does not support the Length property and this throws a NotSupportedException.
Now, I subclass Stream and pass in an instance of my class. My class also throws NotSupportedException on the get() accessor of Length, but this time all my unit tests fail with a NotSupportedException.
The XmlTextReader documentation does not say it requires a Stream supporting Length, and it clearly can use one that doesn't - what is going on?
(This is .NET 3.5 Client)

If a Stream returns true from CanSeek, it assumed that Length, SetLength, Position and Seek are all supported. Some code may test CanSeek and use the result to optimize its behaviour - as seems to be the case here. When you return true from CanSeek but then throw an exception in Length, that's breaking the not-terribly-well-documented contract of Stream.
If you can't support the Length property, it's best to return false from CanSeek.
See more on this question at Stackoverflow