2008-10-09 2 views
13

Wenn ich versuche, den AutoLotWCFService mit "wcftestclient" zu testen, erhalte ich den folgenden Fehler. Was mache ich falsch? Jede Einsicht wird helfen. Dies ist ein einfacher Web-Service, der wshttpbinding mit dem Interface-Vertrag und der Implementierung im Service hat. Hier ist die lange Fehlermeldung: Die Web.Config-Datei hat 2 Endpunkte - einen für Web-Service selbst und andere für MetaDataExchange. Es ist alles ziemlich Standard-Zeug. Ich kann den Code bei Bedarf einfügen - es scheint, ich kann hier keine Dateien anhängen.WCF-Fehler mit WCFTestClient, um einen einfachen WCF-Webdienst zu testen


Error: Cannot obtain Metadata from http://localhost/AutoLotWCFService/Service.svc 
If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. 
For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455. 
WS-Metadata Exchange Error 
    URI: http://localhost/AutoLotWCFService/Service.svc 
    Metadata contains a reference that cannot be resolved: 'http://localhost/AutoLotWCFService/Service.svc'. 
    The remote server returned an unexpected response: (405) Method not allowed. 
    The remote server returned an error: (405) Method Not Allowed. 
    HTTP GET Error URI: http://localhost/AutoLotWCFService/Service.svc 
    The document at the url http://localhost/AutoLotWCFService/Service.svc was not recognized as a known document type.The error message from each known type may help you fix the problem: 
    - Report from 'DISCO Document' is 'Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2.'. 
    - Report from 'WSDL Document' is 'There is an error in XML document (1, 2).' -Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2. 
    - Report from 'XML Schema' is 'Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2.'. 

+0

Können Sie die Konfigurationsabschnitte für den Dienst hinzufügen? Schwer zu sagen, ohne dass was vor sich geht. – Bryant

+0

Der Dienstvertrag (und alle Datenverträge, die verwendet werden) wäre ebenfalls hilfreich. –

+0

Fügen Sie dies zu Ihrem Server Web Config unter angegeben, wird dann den tatsächlichen Fehler:

Antwort

0

Sie müssen sicherstellen, dass das Betriebsverhalten Konfiguration ermöglicht hat einen Metadaten-Tag mit httpGetEnabled = "true"

<serviceBehaviors> 
    <behavior name="serviceBehavior"> 
    <serviceMetadata httpGetEnabled="true"> 
    </behavior> 
</serviceBehaviors> 

Darüber hinaus stellen Sie sicher, dass Ihre Service-Referenzen, die Verhalten.


<service name="blah" behaviorConfiguration="serviceBehavior"> 
0

Danke; glauben Sie es oder nicht das Problem, mindestens den Dienst durch wcftestclient zu laden, wurde gelöst, als ich das ASPNET in IIS mit aspnet-regiis wiederregistrierte.

Das nächste Problem besteht darin, in der Lage zu sein, die Methoden, die durch den Dienst durch wcftestclient verfügbar gemacht werden, aufzurufen. Mit welchen Sicherheitsproblemen muss ich mich befassen? Ich musste anonyme Anmeldung mit Windows-Authentifizierung aktivieren. und immer noch die invoke erzeugten Ausnahmen, die auf etwas verwiesen, das mit Zugriffsverletzung in Beziehung steht. Bei der Suche zeigen einige Dinge auf die Installation von Zertifikaten, die aufgerufen werden können. Bitte erleuchten, wenn möglich.

15

Ich hatte dieses Problem vor kurzem beim Versuch, WCF auf meinem Windows Vista Laptop unter IIS7 zu hosten.

Ich erhielt zuerst den folgenden Fehler: "HTTP-Fehler 404.3 - nicht gefunden" und eine der vorgeschlagenen Lösungen war, "sicherzustellen, dass der erwartete Handler für die aktuelle Seite zugeordnet ist."

Also habe ich manuell einen Handler für die .svc-Datei hinzugefügt und es als DiscoveryRequestHandler definiert, in der Annahme, dass dies helfen könnte. Dies verursachte das oben beschriebene Problem.

Die tatsächliche Auflösung von den Handler ich hinzugefügt hatte zu löschen und die folgenden Befehle auszuführen:

CD c:\windows\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ 
ServiceModelReg -i 

Diese gelöst mein Problem und der Service funktioniert prima. Ich hoffe, dies könnte helfen, Ihr Problem zu beleuchten. Ich kann nicht sicher sein, aber das liegt wahrscheinlich an der Reihenfolge, in der ich die verschiedenen Pakete auf meinem Entwickler-Laptop installiert habe.

+0

Excelent! Das hat wie ein Zauber funktioniert. Hatte ein 404.17 Problem und das hat es behoben. –

+0

Dies löste auch meinen Fehler "Methode nicht erlaubt". Der Dienst würde auf dem integrierten Webserver von Visual Studio funktionieren, aber nicht auf dem lokalen Host. Jetzt funktioniert es auch mit iis. –

0

Versuchen Sie zu prüfen, ob service (name) im Service Markup (Rechtsklick auf servicename.svc) mit dem Service (name) in Ihrer Datei web.config übereinstimmt.

Prost!

1

Wenn die Installation von Componentons nicht funktioniert, versuchen Sie eine Reparatur, diese wird deinstalliert und dann installiert.

"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r 
Verwandte Themen