Ich greife auf einen Webserver zu, der ein benutzerdefiniertes Protokoll anstelle von http in der URL erfordert. Ich habe versucht, mein Protokoll zu registrieren, aber es gibt nicht viel Dokumentation darüber, wie man das zum Laufen bringt. Der Webserver bietet standardmäßige HTTP-Antworten, aber wenn die Anfrage nicht mit custom: // anstelle von http: // vorangestellt wird, funktioniert sie nicht. Ich möchte einfach die zugrunde liegende WebRequest-Funktionalität verwenden, da dies letztlich HTTP ist, jedoch brauche ich eine Möglichkeit, die Anfrage mit meiner benutzerdefinierten Protokoll-URL zu übermitteln. Ich melde mich es so:Registrieren benutzerdefiniertes Protokoll mit WebRequest
WebRequest.RegisterPrefix("custom", new CustomWebRequestCreator());
Aber dann, wenn ich eine WebRequest erstellen gehen, während es nach diesem Code meine benutzerdefinierte Klasse zurückgibt:
Uri uri = new Uri("custom://192.168.0.122:94934/resource");
System.Net.WebRequest request = WebRequest.Create(uri);
Der Debugger sagt, dass die Anforderung ist eigentlich mein benutzerdefinierte Klasse, aber dann bekomme ich diese Ausnahme:
System.NotImplementedException was unhandled
HResult=-2147467263
Message=This method is not implemented by this class.
Source=System
StackTrace:
at System.Net.WebRequest.GetResponse()
...
Wenn ich versuche nur meine URL zu WebRequest.Create() übergeben, ohne das Präfix zu registrieren, bekomme ich diese Ausnahme:
System.NotSupportedException was unhandled
HResult=-2146233067
Message=The URI prefix is not recognized.
Source=System
StackTrace:
at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
at System.Net.WebRequest.Create(Uri requestUri)
...
Irgendeine Idee, wie ich das zum Funktionieren bringen könnte?