2013-07-02 4 views
7

Ich habe das seltsamste Problem auf einem meiner Macbooks. Ich habe eine C# -Anwendung, die unter Mono auf meinem Macbook läuft. Die Anwendung kommuniziert mit einem Web-Service über HTTP und es funktioniert perfekt auf meinem alten Macbook.HTTP-Protokoll nicht in WebRequest unter Mono unterstützt

kaufte ich ein neues macbook und wurde meine Anwendung zu testen, aber aus irgendeinem seltsamen Grund:

HttpWebRequest myReq = 
(HttpWebRequest)WebRequest.Create(sURI); 

Wirft NotSupportedException mit dem mitgelieferten URI als Ausnahmemeldung.

Ich habe auch versucht die folgenden:

HttpWebRequest myReq = 
(HttpWebRequest)WebRequest.Create("http://www.google.com"); 

und bekam die gleiche Ausnahme. Ich bin mir nicht sicher, warum die Dinge verrückt werden und mir nichts einfallen lassen, was dazu führen könnte, dass es auf anderen Macs perfekt funktioniert.

Edit:

Die Mono-Version ich benutze ist 2.10.11

Der Stack-Trace für die Ausnahme ist:

Webrequest.Create Exception string : System.NotSupportedException: http://www.google.com/ 
    at System.Net.WebRequest.GetCreator (System.String prefix) [0x00000] in <filename unknown>:0 
    at System.Net.WebRequest.Create (System.Uri requestUri) [0x00000] in <filename unknown>:0 
    at System.Net.WebRequest.Create (System.String requestUriString) [0x00000] in <filename unknown>:0 
    at MyApp.XSPManager.GeneralSOAPFunction (System.String serverName, System.String settingsAsXml, SharedLib.zErrorCodes& errorCode, System.String& message, System.String& actionType) [0x00000] in <filename unknown>:0 

Grüße

+0

Welche Versionen von Mono führen Sie aus, und möglicherweise liefern Sie den StackTrace für die Ausnahme – jakobandersen

+0

@miracledev Ich habe die Frage mit den angeforderten Informationen bearbeitet. hoffe, sie sind von etwas Wert .. –

Antwort

1

Die WebRequest.GetCreateor bekommt seine Liste der unterstützten Protokolle aus app.config/machine.config, speziell der Konfigurationsabschnitt system.net/webRequestModules.

Wenn das Protokoll (in Ihrem Fall "http") dort nicht gefunden wird, löst es Ihre NotSupportedException aus.

Überprüfen Sie also Ihre machine.config, es fehlt wahrscheinlich die richtigen WebRequestModule. Es sollte "http" -> HttpRequestCreator haben.

Oder versuchen Sie den privaten Konstruktor von HttpWebRequest durch Reflexion aufrufen, wenn alles andere fehlschlägt.

Verwandte Themen