WCF: Wie bekommt man eigentlich verwenden WSHttpBinding? Ich bekomme Ausnahmen statt
Erstellte ich eine WCF-Service:
Shared.dll:
[ServiceContract(ConfigurationName = "ICalculator")]
public interface ICalculator
{
[OperationContract()]
int Add(int a, int b);
}
Server:
[ServiceBehavior()]
public class Calculator : ICalculator
{
public int Add(int a, int b) { return a + b; }
}
Client (Versuch #1):
public class CalculatorClient : ClientBase<ICalculator>, ICalculator
{
private static Binding binding = new WSHttpBinding("MyConfig");
private static EndpointAddress remoteAddress = new EndpointAddress(...);
public CalculatorClient() : base(binding, remoteAddress) { }
public int Add(int a, int b)
{
return Channel.Add(a, b); //Exception
}
}
Client (Versuch #2): -- Note: ich fügte hinzu, eine Service-Referenz statt eine CalculatorClient mich (.NET erstellt es bei mir).
static void Main(string[] args)
{
Binding binding = new WSHttpBinding("MyConfig");
EndpointAddress remoteAddress = new EndpointAddress(...);
CalculatorClient client = new CalculatorClient(binding, remoteAddress);
int result = client.Add(5, 4); //Exception
}
Client (Versuch #3): -- ich habe ihn an ein BasicHttpBinding() statt
static void Main(string[] args)
{
Binding binding = new BasicHttpBinding("MyConfig");
EndpointAddress remoteAddress = new EndpointAddress(...);
CalculatorClient client = new CalculatorClient(binding, remoteAddress);
int result = client.Add(5, 4); //This works!
}
app.config:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="MyConfig" /> <!-- did not add anything to this yet -->
</wsHttpBinding>
</bindings>
</system.serviceModel>
Die exception die ich bekomme, ist: Content-Type application/soap+xml; charset=utf-8 nicht unterstützt wurde, durch service http://localhost/CalculatorService.svc. Die client-und service-Bindungen möglicherweise nicht überein. Ich sehe nicht, wie können Sie nicht überein, wenn ich eine gemeinsam genutzte dll-Datei zwischen server und client. Die BasicHttpBinding
funktioniert, nur nicht die WSHttpBinding
(ich habe nicht einmal versucht WS2007HttpBinding
.
Ausnahme: [System.ServiceModel.ProtocolException
]
{"Content-Type application/soap+xml; charset=utf-8 nicht unterstützt wurde, durch service http://localhost/CalculatorService.svc. Die client-und service-Bindungen möglicherweise nicht überein."}
Inner Exception: [System.Net.WebException
]
Der Remoteserver hat einen Fehler zurückgegeben: (415) Nicht verarbeiten kann, die Nachricht, da der Inhaltstyp "application/soap+xml; charset=utf-8' wurde nicht dem erwarteten Typ 'text/xml; charset=utf-8'..
Was ist der service-Konfiguration?
Wo hosten Sie Ihren service? Haben Sie eine WSHttpBinding für den Dienst konfiguriert wurde?
Hinzugefügt die Ausnahme.
Was macht Ihr server config Aussehen? Die
ProtocolException
würden fast zeigen Sie REST-Endpunkt, sondern versuchen Sie, rufen Sie es mit SEIFE oder rufen die Ergebnisse in eine HTML-Fehler-Seite. In Ihrem service-Projekt - können Sie mit der rechten Maustaste auf die *.die svc-Datei und führen Sie einen "Ansicht im browser" ?? Solange ist das gar nicht funktionieren, du bist völlig out of luck....InformationsquelleAutor michael | 2011-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Sicherheitseinstellungen festgelegt werden, die verwendet werden auf dem WSHttpBinding
http://msdn.microsoft.com/en-us/library/ms731884(v=VS.90).aspx
Aktualisiert mit Beispiel-Client/Server "WSHttpBinding" Standard-Sicherheits -
Client
Server
https
statthttp
, die nur die änderung der uri muss nicht dieser Anforderung gerecht werden?Transport geht, dass SSL erforderlich ist
InformationsquelleAutor David H