Accepter et renvoyer le fichier à / de C # WebService

Comment créer un service Web en C # qui acceptera le fichier, puis le renverra au même moment en un seul appel (synchrone). Ce que j’essaie de faire est de créer un WebService qui acceptera un document MS Office, convertira ce document en PDF, puis renverra ce fichier à l’appelant (dans mon cas, j’utilise Java pour le client).

Comme silvermind l’a dit dans son commentaire, la meilleure option est d’accepter et de renvoyer un tableau d’octets dans votre service Web.

Vous pouvez charger un fichier en tant que bytearray avec une méthode comme celle-ci:

public byte[] FileToByteArray(ssortingng _FileName) { byte[] _Buffer = null; try { System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.BinaryReader _BinaryReader = new System.IO.BinaryReader(_FileStream); long _TotalBytes = new System.IO.FileInfo(_FileName).Length; _Buffer = _BinaryReader.ReadBytes((Int32)_TotalBytes); _FileStream.Close(); _FileStream.Dispose(); _BinaryReader.Close(); } catch (Exception _Exception) { Console.WriteLine("Exception caught in process: {0}", _Exception.ToSsortingng()); } return _Buffer; } 

En outre, si vous avez implémenté le service Web en tant que service WCF, vous devrez peut-être modifier certains parameters pour augmenter la quantité d’informations que vous pouvez envoyer et le délai d’expiration. Ceci est un exemple de la configuration de liaison qui le permet. (Seulement un échantillon, peut ne pas correspondre à vos besoins)

         

vous pouvez encoder de petites quantités de données binarys dans une chaîne base64.

Voici quelques tutoriels de différentes sources. Cela dépend également de ce que vous utilisez wcf ou asmx. Je pense également que vous devez créer deux fonctions distinctes et une autre qui appelle à la fois l’envoi et la réactivation simultanément, bien que vous souhaitiez peut-être avoir un délai d’attente avant qu’un envoi ait lieu avant de pouvoir le recevoir.

http://support.microsoft.com/kb/318425

http://www.zdnetasia.com/create-a-simple-file-transfer-web-service-with-net-39251815.htm

https://stackoverflow.com/questions/4530045/how-to-transfer-file-through-web-service

Le moyen le plus simple consiste à intégrer les bibliothèques de base du framework ASP.net MVC3 dans votre projet Web de base, puis à écrire un contrôleur MVC simple avec une méthode unique qui renvoie un object de type FileResult.

Scott Hanselman a publié en quelques minutes un excellent article sur son blog: http://www.hanselman.com/blog/IntegratingASPNETMVC3IntoExistingUpgradedASPNET4WebFormsApplications.aspx

Cela fonctionne parfaitement et se fait en moins de 3 minutes (après l’intégration du framework MVC3). Il existe déjà un article stackoverflow sur le retour du fichier dans MVC: Comment créer un fichier et le renvoyer via FileResult dans ASP.NET MVC?

Salutations,