Le passage d'un FileStream pour WCF jette “délais d'attente ne sont pas pris en charge sur ce volet” exception
Lorsque vous tentez de passer un petit FileStream à mon service WCF-je obtenir des "délais d'attente ne sont pas pris en charge sur ce flot d'erreur". N'importe qui peut voir ce que je fais mal?
Interface:
[OperationContract]
List<SystemClass> ReadExcelFile(System.IO.FileStream stream);
Web.Config
<bindings>
<basicHttpBinding>
<binding name="streaming" maxReceivedMessageSize="2147483647" transferMode="Streamed">
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="MISDashboard.wcfService" behaviorConfiguration="">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="streaming" contract="MISDashboard.wcfService"></endpoint>
</service>
</services>
...
<httpRuntime maxRequestLength="2147483647"/>
OriginalL'auteur ijason03 | 2013-07-02
Vous devez vous connecter pour publier un commentaire.
Ne pas utiliser
FileStream
comme paramètre, maisStream
. UnFileStream
est un flux lié au système de fichiers local; une fois que vous commencer à transférer les données, dans de l'autre côté le flux en provenance du réseau, de sorte qu'un FileStream ne peut pas être utilisé.Vous pourriez croire que c'est quasiment la même, mais
Stream
est traité d'une manière spéciale par la WCF et by-pass de nombreuses tâches internes.Aussi, pour l'envoi de Données Volumineux, pensez à lire cet excellent article.
OriginalL'auteur Cybermaxs
Je suppose que la question est ici sur le ReadTimeOut et WriteTimeOut propriétés. Sous le capot de la WCF doit être en train d'essayer de les mettre en place et qu'elles ne sont pas implémentées dans la classe FileStream il lève l'exception. Donc, si vous définissez l'Argument d'une méthode de type Stream WCF doit créer le flux approprié qui est nécessaire pour la transmission de données. Je suppose NetworkStream.
OriginalL'auteur user1570094