WCF-Fehler beim Ausführen: Die manuelle Adressierung ist in dieser Fabrik aktiviert, daher müssen alle gesendeten Nachrichten voradressiert werden

Ich habe einen mit WebHttpBinding gehosteten WCF-Dienst. Der Service ist sehr einfach, ein Betriebsvertrag, der mehrere Parameter akzeptiert. Mein WCF-Client, der nach Verwendung der "Dienstreferenz hinzufügen" automatisch generiert wurde, kann den WCF-Dienst nicht direkt verwenden. Der Fehler tritt nur bei WebHttpBinding auf, nicht bei den anderen.

Serverseite

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "Submit2String", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped)]
string Submit2String(string input1, string input2);

Client-Seite

ExpenseServiceClient proxy = new ExpenseServiceClient();
proxy.Submit2String("test1", "test2");

Wenn ich den obigen Code testweise ausführe, wird folgende Fehlermeldung angezeigt:

Error: InvalidOperationException was unhandled by user code
Manual addressing is enabled on this factory, so all messages sent must be pre-addressed.

So sieht meine automatisch generierte Konfigurationsdatei aus, nachdem Sie die "Dienstreferenz hinzufügen" verwendet haben:

 <system.serviceModel>
  <bindings>
    <webHttpBinding>
      <binding name="webHttp">
        <security mode="None">
          <transport clientCredentialType="None" />
        </security>
      </binding>
    </webHttpBinding>
  </bindings>
  <client>
    <endpoint binding="webHttpBinding" 
              bindingConfiguration="webHttp"
              contract="ExpenseService.IExpenseService"  
              address="http://localhost/myservices/ExpenseService.svc">
    </endpoint>
  </client>
</system.serviceModel>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage