2010-12-21 12 views
0

Ich habe eine benutzerdefinierte Proxyklasse für einen einzelnen WCF-Webdienst (nimmt eine Zeichenfolge in, sendet eine Zeichenfolge zurück). Der asynchrone Webservice-Aufruf funktioniert in meiner Windows Form-App sehr gut. Wenn ich es jedoch von einer Silverlight-Testanwendung aus aufrufen, erhalte ich einen Fehler: Hresult 0x80000012. Dieser Fehler ist für Extension Attribute auf Dateien, glaube ich ... Go-Figur.Silverlight-Webdienstanruf trifft nicht einmal Server

Mit Fiddler kann ich bestätigen, dass kein Datenverkehr zu IIS, die den Dienst hostet, ist, so ist es nicht das übliche domänenübergreifende Einschränkungsproblem. Ich habe versucht, sowohl "localhost" (die in der Windows Forms App funktioniert) und einen Namen in meiner Hosts-Datei für den Fall, dass "localhost" das Problem verursacht hat.

Ich habe es getestet, indem Sie den asynchronen Aufruf vom UI-Thread und auch von einem Thread-Pool-Queue-Element mit den gleichen Ergebnissen gemacht haben. Der Proxycode ist im Grunde genommen nur vereinfacht von dem, was der MS-Proxy-Generator erzeugt, indem er Bindungen und Einstellungen programmatisch anstatt über Konfigurationsdateien einrichtet, und ich benutze im Grunde die gleiche Quelle, um normale .Net- und Silverlight-Versionen der Bibliotheken zu kompilieren beteiligt. (Nun, der MS-Proxy-Code, auf dem es basiert, stammt von einem WCF-Webdienst, nicht vom RIA-Vorlagencode, also gibt es vielleicht Unterschiede ...)

Vier Tage fruchtloser Suche auf diesem. Jede Hilfe oder Vorschläge würden sehr geschätzt werden!

Antwort

3

Ich habe es herausgefunden. Ich verwendete (dumm) einen Backslash in einem Teil der URL, die ich zum Einrichten des Serviceanrufs verwendet habe. Die meisten internen Teile des MS-Codes handhabten das ok und transponierten sie für Schrägstriche - bei Windows Forms funktionierte alles nahtlos. Die Silverlight-Bibliotheken konnten jedoch nicht damit umgehen und warfen den sehr hilfreichen "HResult 0x80000012" -Fehler.

Das Ändern meiner Backslashes in Schrägstriche scheint das Problem behoben zu haben!

+1

Sie können auch alle Backslashs durch% 5C ersetzen (das ist das url-codierte Zeichen für Backslash). Das scheint gut zu funktionieren. – S0me0ne