Frage

Ich erhalte eine Fehlermeldung beim Versuch, das WCF-Testclient mit meinem WCF-Dienst zu verwenden. Hier ist der Service-Code:

[ServiceContract]
public interface IEmployeeService
{
    [OperationContract(Name = "GetEmployee")]
    [WebGet(RequestFormat = WebMessageFormat.Xml,
        UriTemplate = "/Employees/{employeeNumber}")]
    Employee GetEmployee(string employeeNumber);
}

public Employee GetEmployee(string employeeNumber)
{
    var employeeNumberValue = Convert.ToInt32(employeeNumber);
    var employee = DataProvider.GetEmployee(employeeNumberValue);
    return employee;
}

<system.serviceModel>
    <services>
        <service name="Employees.Services.EmployeeService"
                 behaviorConfiguration="metaBehavior">
            <endpoint address=""
                      behaviorConfiguration="webHttp"
                      binding="webHttpBinding"
                      contract="Employees.Services.IEmployeeService">
            </endpoint>
            <endpoint address="mex"
                      binding="mexHttpBinding"
                      contract="IMetadataExchange">
            </endpoint>
        </service>
    </services>
    <behaviors>
        <endpointBehaviors>
            <behavior name="webHttp">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
            <behavior name="metaBehavior">
                <serviceMetadata httpGetEnabled="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

Ich bin dem Dienst verbinden Lage, den WCF-Testclient verwenden, aber wenn ich versuche GetEmployee (employeeNumber) bekomme ich folgende Fehler aufzurufen:

Fehler beim Dienst aufzurufen. Mögliche Ursachen: Der Service ist offline oder nicht zugänglich; die clientseitige Konfiguration der Proxy nicht überein; die bestehende Proxy ist ungültig. Beachten Sie den Stack-Trace für mehr Details. Sie können versuchen, durch das Starten ein neues Proxy zu erholen, die Wiederherstellung Konfiguration auf dem Standard oder Auffrischen den Service.

Ich konnte erfolgreich diesen Service aufrufen, indem eine Anfrage vom Browser gesendet wird.

Jede Idee, warum ich nicht das WCF-Testclient verwenden kann?

War es hilfreich?

Lösung

Bitte ignorieren Sie meine frühere Antwort. Ich glaube nicht, das Problem auf der Client-Seite Config ist.

Siehe WCF-Test Client und WebHttpBinding .

  

Dies ist eine Einschränkung der Bahn   Programmiermodell selbst. Im Gegensatz zu SOAP   Endpunkte (d.h. solche mit   Basichttpbinding, WSHttpBinding, usw.)   die eine Möglichkeit haben, Metadaten zu belichten   über sich selbst (WSDL oder MEX) mit   Informationen über alle Vorgänge /   Parameter im Endpunkt, gibt es   derzeit keine Standardmethode zu belichten   Metadaten für einen nicht-SOAP-Endpunkt - und   das ist genau das, was die   webHttpBinding-basierte Endpunkte sind. Im   Kurz gesagt, wird das WCF-Testclient nicht   nützlich für Web-basierte Endpunkte. Wenn   Einige Standard für die Darstellung von   Web-Stil Endpunkte ergibt sich, wenn WCF   Schiffe der nächsten Version werden wir wahrscheinlich   Aktualisieren Sie den Test-Client zu unterstützen,   aber jetzt gibt es keine weit   angenommen.

Andere Tipps

Ich denke, Ihre Config falsch ist, sollten Sie Knoten Sicherheitsmodus = "None" hinzufügen und Attribut bindingConfiguration = "NoneSecurity"

Ändern wie meine Config, versuchen Sie es erneut:

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="NoneSecurity"
          maxBufferPoolSize="12000000" maxReceivedMessageSize="12000000" useDefaultWebProxy="false">
          <readerQuotas maxStringContentLength="12000000" maxArrayLength="12000000"/>
          <security mode="None"/>
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="Elong.GlobalHotel.Host.IHotelAPIBehavior"
        name="Elong.GlobalHotel.Host.IHotelAPI">
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="NoneSecurity" contract="Elong.GlobalHotel.Host.IIHotelAPI">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Elong.GlobalHotel.Host.IHotelAPIBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  I had a similar problem, the solution was in a minor error in the message alias ... that very generic message ... in our case was assigned a Boolean false if the right is true.
  This value was in the MDM application that was running on websphere.

Der Weg in meinem Fall:

   /opt/infamdm/hub/server/resources/cmxserver.properties
   /opt/infamdm/hub/cleanse/resources/cmxcleanse.properties
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top