j'ai rencontré ce même problème lors de l'utilisation des services WCF. J'avais besoin d'obtenir le contenu d'un message POST, et utilisais un argument Stream dans ma méthode pour obtenir le contenu du corps du message. Une fois que j'ai eu le flux, je voulais lire son contenu en une seule fois, et j'avais besoin de savoir de quel tableau d'octets de taille j'avais besoin. Donc, dans l'allocation du tableau, j'appellerais System.IO.Stream.Length et obtiendrais l'exception mentionnée par l'OP. Est-ce la raison pour laquelle vous devez connaître la longueur du flux afin que vous puissiez lire le contenu de l'ensemble du flux? Vous pouvez réellement lire tout le contenu du flux dans une chaîne à l'aide de System.IO.StreamReader. Si vous avez toujours besoin de connaître la taille de votre flux, vous pouvez obtenir la longueur de la chaîne résultante. Voici le code de la façon dont je l'ai résolu ce problème:
[OperationContract]
[WebInvoke(UriTemplate = "authorization")]
public Stream authorization(Stream body)
{
// Obtain the token from the body
StreamReader bodyReader = new StreamReader(body);
string bodyString= bodyReader.ReadToEnd();
int length=bodyString.Length; // (If you still need this.)
// Do whatever you want to do with the body contents here.
}
La classe Stream est abstraite, ce qui est la classe Stream dérivé que vous utilisez? En outre, postez le code qui cause le problème si possible? –