Comment utiliser HttpWebRequest d'appeler une Opération de Service Web qui prend en byte[] paramètre?

Je suis en train d'appeler un [webmethod] à partir de C#. Je peux appeler simple webmethod qui prennent en 'string' paramètres. Mais j'ai un webmethod qui prend dans un " byte [] paramètre. Je suis en cours d'exécution dans '500-erreur interne du serveur lorsque j'essaie de l'appeler. Voici quelques exemple de ce que je suis en train de faire.

Permet de dire que ma méthode est comme ça

[WebMethod]
public string TestMethod(string a)
{
    return a;
}

Je l'appelle comme ceci en utilisant HttpRequest en C#

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Credentials = CredentialCache.DefaultCredentials;
            req.Method = "POST";
            //Set the content type of the data being posted.
            req.ContentType = "application/x-www-form-urlencoded";

            string inputData = "sample webservice";
            string postData = "a=" + inputData;
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] byte1 = encoding.GetBytes(postData);

            using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
            {
                StreamReader sr = new StreamReader(res.GetResponseStream());
                string txtOutput = sr.ReadToEnd();
                Console.WriteLine(sr.ReadToEnd());
            }

Cela fonctionne parfaitement bien. Maintenant j'ai un autre webmethod qui est définie comme ceci

[WebMethod]
public string UploadFile(byte[] data)

J'ai essayé de l'appeler comme ça

            ASCIIEncoding encoding = new ASCIIEncoding();
            string postData = "data=abc";
            byte[] sendBytes = encoding.GetBytes(postData);
            req.ContentLength = sendBytes.Length;
            Stream newStream = req.GetRequestStream();
            newStream.Write(sendBytes, 0, sendBytes.Length);

Mais qui me donne l'500 erreur interne 🙁

OriginalL'auteur shergill | 2009-04-01