Probleme mit dem HttpWebRequest

12/12/2009 - 16:12 von ingo | Report spam
Hallo NG,

mit meinem foglenden Code habe ich Probleme:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri +
cmds.GetPost());
request.Credentials = new NetworkCredential(iprsServer.SOAPUSERNAME,
iprsServer.SOAPUSERPWD);
request.Method = "POST";
request.KeepAlive = true;
request.ContentType = "application/soap+xml; charset\"utf-8\"";

ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byte1 = encoding.GetBytes(command);
request.ContentLength = byte1.Length;

using (Stream newStream = request.GetRequestStream())
{
newStream.Write(byte1, 0, byte1.Length);
}

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Bis zur letzten Zeile làuft alles Prima, die Daten kommen an dem Server an.
Nur der letzten Zeile bekomme ich immer die WebException 405.
Der Code làuft in einem Dienst als LocalSystem.

In der App.Config habe ich folgende Einstellungen:
<mscorlib>
<security>
<policy>
<PolicyLevel version="1">
<SecurityClasses>
<SecurityClass Name="WebPermission"
Description="System.Net.WebPermission, System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</SecurityClasses>
<NamedPermissionSets>
<PermissionSet class="NamedPermissionSet" version="1"
Name="Everything" Description="Erlaubt den uneingeschrànkten Zugriff auf
alle Ressourcen, die von den integrierten Berechtigungen abgedeckt sind">
<IPermission class="WebPermission" version="1"
Unrestricted="true"/>
</PermissionSet>
<PermissionSet class="NamedPermissionSet" version="1"
Unrestricted="true" Name="FullTrust" Description="Ermöglicht den Vollzugriff
auf alle Ressourcen"/>
</NamedPermissionSets>
</PolicyLevel>
</policy>
</security>
</mscorlib>

Kann mir jemand weiter helfen??

Danke im voraus.

Grüße Ingo
 

Lesen sie die antworten

#1 Frank Dzaebel
12/12/2009 - 16:52 | Warnen spam
Hallo Ingo,

request.ContentType = "application/soap+xml; charset\"utf-8\"";
ASCIIEncoding encoding = new ASCIIEncoding();



UTF-8 und ASCII passen schon mal nicht zusammen.
Ausserdem fehlt das '=' Zeichen und man sollte (wenn, dann) eher
einfach: " [.] charset=utf-8"
benutzen. Ansonsten natürlich alle Möglichkeiten aus:

[HTTP-Fehler 405 Method not allowed (Methode nicht erlaubt) erklàrt]
http://www.checkupdown.com/status/E405_de.html

Also etwa, ob der, wo Du hin sendest, überhaupt POST unterstützt.
Ist das eine Seite unter Deiner Kontrolle?

[Retrieving HTTP content in .NET with WebRequest/WebResponse]
http://www.west-wind.com/presentati...equest.htm

Ausserdem, wenn Du schon "application/soap+xml" schickst,
dann würde ich als Server auch SOAP-Envelope's erwarten, die
solltest Du dann halt auch in den POST-Strings senden.

[Building Dynamic SOAP Requests with ASP.NET [C#]]
http://www.eggheadcafe.com/articles/20011103.asp

Ggf. solltest Du also (u.a.) auch mal sagen, was genau in
"command" steht. Wenn die URL öffentlich nutzbar ist,
auch ggf. diese.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen