it-swarm.com.de

Der WCF-Testclient kann keinen Dienst hinzufügen und keine Metadaten abrufen

Kann mir jemand sagen, warum ich diese Fehlermeldung bekomme, wenn ich versuche, meinen Dienst hinzuzufügen?

Fehler: Metadaten können nicht von http: // myserver/myapp abgerufen werden. Wenn dies ein Windows (R) Communication Foundation-Dienst ist, auf den Sie Zugriff haben, stellen Sie sicher, dass Sie die Metadatenveröffentlichung an der angegebenen Adresse aktiviert haben. Informationen zum Aktivieren von Metadatenveröffentlichungen finden Sie in der MSDN-Dokumentation unter http://go.Microsoft.com/fwlink/?LinkId=65455 . WS-Metadata Exchange-Fehler-URI: http: // myserver/myapp Metadata enthält eine Referenz, die nicht aufgelöst werden kann: ' http: // myserver/myapp '. Der Remote-Server hat eine unerwartete Antwort zurückgegeben: (405) Methode nicht zulässig. Der Remote-Server hat einen Fehler zurückgegeben: (405) Methode nicht zulässig.HTTP GET Fehler-URI: http: // myserver/myapp Beim Herunterladen von ' http: // myserver/myapp ' ist ein Fehler aufgetreten. Die Anforderung ist mit dem HTTP-Status 403 fehlgeschlagen: Verboten.

Update: Ich habe bereits folgenden Endpunkt

<endpoint address="mex" 
          binding="mexHttpBinding"
          name="Metadata"
          contract="IMetadataExchange" />

Ich habe auch die Service-Verhalten eingestellt:

  <serviceBehaviors>
    <behavior name="myBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
10
hyprsleepy

Ich habe es herausgefunden. Ich habe einen absoluten Pfad auf einem meiner Endpunkte verwendet und hatte mehr als einen. Ich habe es in einen relativen Pfad geändert und alles hat funktioniert.

Dies kann auch passieren, wenn der Dienst nicht ausgeführt wird und nichts mit Metadaten zu tun hat. Wenn Sie einen ConfigurationErrorsExceptionhaben, wird dieses Ergebnis ebenfalls angezeigt.

Ich bekam es auch, als ich versuchte, Konfigurationsänderungen im Projekt zu speichern, und dann wurde mir gesagt, dass ich speichern/überschreiben/ignorieren sollte, usw. Schließlich wurde ein Projektuntertyp "Designer" hinzugefügt, und als ich das entfernte, funktionierte es wieder einwandfrei.

5
hyprsleepy

Dies kann auch passieren, wenn Sie versuchen, ein benutzerdefiniertes Klassenobjekt aus einer der Funktionen zurückzugeben, und diese Funktion nicht über das [DataContract]-Attribut in der Klassendeklaration verfügt. WCF kann nicht herausfinden, welchen Typ Sie zurückgeben, so dass die Standardnachricht ausgegeben wird.

[Serializable]
[DataContract]
public class ServiceResult
{
  ....
}
8
Kevbo

Ich hatte dieses Problem, es stellte sich heraus, dass bei der Umbenennung der .svc-Datei kein Verweis darauf in Service1.svc umbenannt wurde. Führen Sie eine projektweite Suche aus und ersetzen Sie .Service1 durch Ihren neuen Namen.

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="MyRenamedService.svc.cs" %>

Service="MyNamespace.Service1" sollte Service="MyNamespace.MyRenamedService" lesen

8
GJKH

Ich entdeckte, dass ich den gleichen Fehler hatte, weil ein DataContract den von Dictionary geerbten verwendet hatte. Die korrekte Einrichtung des DataContract sollte wie folgt aussehen:

[CollectionDataContract(Name = "AdditionalProperties",
                            ItemName = "Property",
                            KeyName = "Key",
                            ValueName = "Value")]
public class AdditionalProperties : Dictionary<string, string>
{
}
0
Andrew

bitte überprüfen und lesen Sie den gesamten Text des Fehlers.

in meinem Fall hat eine andere DLL einen Fehler, zeigt jedoch denselben Fehler im obigen Text des Fehlers.

0
Ali Rasouli

Bitte überprüfen Sie, ob Sie diese Adresse auflösen können und das richtige virtuelle Verzeichnis angegeben haben. Wird myserver zu einer IP mit beispielsweise ping myserver aufgelöst? Ist myapp das richtige virtuelle Verzeichnis? Sie haben Metadaten für Ihren WCF-Dienst aktiviert, die URL ist jedoch höchstwahrscheinlich falsch.

0
Tore Aurstad

Manchmal ist mit den Metadaten oder den Einstellungen nichts zu tun. Stattdessen können wir einfach 127.0.0.1 anstelle von http:\localhost\verwenden.

0
Dani Mathew

Dies ist meine Erfahrung mit dieser Fehlermeldung, kann für andere nützlich sein. Mein WCF-Dienst funktioniert einwandfrei auf Windows 2008-Servern. Ich kopierte dieselbe Lösung auf den Dev-Computer und wählte die .svc-Datei aus der Lösung aus, damit der WCF-Test durchgeführt wird Client kann geöffnet werden.

Mit Fehlern geöffneter WCF-Testclient kann keine Metadaten abrufen, Assembly kann nicht geladen werden usw.

Der Schlüssel ist, zuerst den Dienst zu starten ( http: // localhost: port/Service ) und dann nur den WCF - Testclient auszuprobieren.

0
user2211290

Wenn das Hinzufügen der Metadatenendpunkte nicht Ihr Problem ist. Weitere Informationen finden Sie in den Fehlernachrichten. Ich hatte eine fehlende Bibliothek; Msgstr "Datei oder Assembly * konnte nicht geladen werden".

Ich musste den Verweis auf Copy Local = True ändern 

0
Eric Schneider

Ich bin neu bei WCF und mir wurde gerade ein Projekt mit WCF-Diensten übergeben. Ich hatte ähnliche Probleme mit der Verwendung des WCF-Testclients in VS2010 unter Win7. Nachdem ich alle Konfigurationsänderungen in diesem Artikel und anderen getestet hatte, erhielt ich immer noch ähnliche Fehler. 

Also gab ich auf und las über WCF nach. Hier fand ich, dass VS als Administrator gestartet werden sollte. Hier ist der Artikel: Erste Schritte Tutorial WCF Es stellt sich heraus, dass ich VS2010 starten muss, wobei 'Als Administrator ausführen' markiert ist. Dies behebte das Problem und ich konnte WCF-Dienste in VS2010 testen. Ich poste diese Antwort, wenn andere über den Run als Administrator schauen.

0
CW30Meters

In meinem Fall hatte ich BindingParams.AllowHttpGet nicht aktiviert. Als das auf wahr gesetzt wurde, hat es funktioniert ...

0
user007