Ich versuche, einen Workflow-Dienst von einem ASP.NET-Projekt aufzurufen, ohne eine Service-Referenz zu meinem ASP.NET-Projekt hinzuzufügen. Ich habe ein Beispiel dafür gefunden, wie ich einen Web-Service aufrufen kann, ohne ihn als Service hinzuzufügen, und ich habe ihn entsprechend meinen Workflow-Service-Anforderungen geändert. Ist es möglich, dass es funktioniert?C# Anruf-Workflow-Dienst von HttpRequest ohne Service-Referenz hinzufügen
public void Execute()
{
HttpWebRequest request = CreateWebRequest();
XmlDocument soapEnvelopeXml = new XmlDocument();
soapEnvelopeXml.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<soap:Body>
<GetData xmlns=""http://tempuri.org/IService/GetData"">
<string xmlns=""http://schemas.microsoft.com/2003/10/Serialization/"">test1234</string>
</GetData>
</soap:Body>
</soap:Envelope>");
using (Stream stream = request.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
using (WebResponse response = request.GetResponse())
{
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
string soapResult = rd.ReadToEnd();
Console.WriteLine(soapResult);
}
}
}
public HttpWebRequest CreateWebRequest()
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"http://localhost:3724/Service1.xamlx");
webRequest.Headers.Add(@"SOAP:Action");
webRequest.ContentType = "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
return webRequest;
}
Ich erhalte eine Fehlermeldung auf HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create (@ "http: // localhost: 3724/Service1.xamlx") ;. Fehler: Interner Serverfehler. Irgendwelche Ideen, wie es funktioniert?
Gibt es einen Grund, warum Sie benötigen HttpWebRequest zu bedienen und kann keine Channel verwenden (ich glaube, Workflow-Dienste sind nur WCF-Dienste richtig?)? Das spätere Speichern erspart Ihnen das manuelle Erstellen eines Soap-Umschlags und erfordert keine Service-Referenz - möglicherweise ein einfacherer Ansatz. – kmp