Ich versuche, eine [webmethod] von C# aufrufen. Ich kann einfache Webmethods aufrufen, die 'String'-Parameter aufnehmen. Aber ich habe eine Webmethode, die in einem 'byte[]' Parameter nimmt. Wenn ich versuche, sie aufzurufen, erhalte ich die Meldung "500 internal server error". Hier ist ein Beispiel dafür, was ich tue.
Sagen wir, meine Methode sieht folgendermaßen aus
[WebMethod]
public string TestMethod(string a)
{
return a;
}
Ich rufe es wie folgt mit HttpRequest in 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());
}
Das funktioniert einwandfrei. Jetzt habe ich eine weitere Webmethode, die wie folgt definiert ist
[WebMethod]
public string UploadFile(byte[] data)
Ich habe versucht, sie wie folgt aufzurufen
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);
Aber das gibt mir einen internen Fehler 500 :(