Je regardais cette discussion: How to handle large file uploads via WCF?problème avec WCF en streaming
je dois avoir un service Web hébergé chez mon fournisseur où je dois charger et télécharger des fichiers. Nous parlons de vidéos de 1 Mo à 100 Mo d'où l'approche en streaming.
Je ne peux pas le faire fonctionner, je déclare une interface:
[ServiceContract]
public interface IFileTransferService
{
[OperationContract]
void UploadFile(Stream stream);
}
et tout ira bien, je mets en œuvre comme ceci:
public string FileName = "test";
public void UploadFile(Stream stream)
{
try
{
FileStream outStream = File.Open(FileName, FileMode.Create, FileAccess.Write);
const int bufferLength = 4096;
byte[] buffer = new byte[bufferLength];
int count = 0;
while((count = stream.Read(buffer, 0, bufferLength)) > 0)
{
//progress
outStream.Write(buffer, 0, count);
}
outStream.Close();
stream.Close();
//saved
}
catch(Exception ex)
{
throw new Exception("error: "+ex.Message);
}
}
Toujours pas de problème, sa publication à mon serveur web sur l'interweb. Jusqu'ici tout va bien.
Maintenant, je fais une référence à lui et lui passera un FileStream, mais l'argument est maintenant un octet [] - pourquoi est-ce et comment puis-je obtenir la bonne façon pour le streaming?
Modifier Mon regard se lier comme ceci:
<bindings>
<basicHttpBinding>
<binding name="StreamingFileTransferServicesBinding"
transferMode="StreamedRequest"
maxBufferSize="65536"
maxReceivedMessageSize="204003200" />
</basicHttpBinding>
</bindings>
Je peux consommer sans problème, et obtenir aucune erreur - autre que mon paramètre d'entrée a changé à partir d'un flux à un octet []
Édition 2 Résolu! J'étais un peu rapide quand j'ai fait la référence sur mon client. Par accident, j'ai fait une "référence web" au lieu d'une "référence de service". Cela a résolu le problème de l'octet []/stream
étiez-vous capable de faire un wsdl? Si oui, pouvez-vous ajouter cela à votre description. Je crois que cela peut être un problème de configuration dans votre liaison. –
Je suppose que quand je peux le consommer et le parcourir dans mon navigateur, alors je peux générer le wsdl? –
Comment faites-vous 'référence'? Est-ce un ServiceReference? –