Ich entwickle eine Service-App, die IoT-Geräte erlauben kann, die mit dem Server verbunden sind, String-Daten zum Client über WCF übertragen (ich muss dies nur in C# tun). Ich war in der Lage, dies zu tun, indem ich einen selbst gehosteten Dienst unter Verwendung des Endpunkts mit wsdualhttpbinding schrieb. Jetzt möchte ich mit webhttpbinding einen weiteren Endpunkt zum selben Dienst hinzufügen, um REST-Funktionen zu nutzen. Ist es möglich? Schätze, wenn du mich auf ein Beispiel hinweisen kannst, das das tut, was ich oben erwähnt habe. Googling für Stunden und konnte kein Beispiel finden, das wsdualhttpbinding und webhttpbinding zusammen ermöglicht.Möglicher Endpunkt mit wsdualhttpbinding + webhttpbinding?
0
A
Antwort
0
Ende nach oben. Ich schaffte es, beide Endpunkt wsdualhttpbinding und webhttpbinding zu aktivieren und es selbst gehostet.
Hier sind die Codes zeigt, wie ich beide Endpunkte an der Konsole aktivieren.
WebServiceHost host1 = new WebServiceHost(typeof(REST), new Uri("http://localhost:8090/"));
host1.AddServiceEndpoint(typeof(IREST), new WebHttpBinding(), "rest");
host1.Description.Endpoints[0].Behaviors.Add(new WebHttpBehavior { HelpEnabled = true });
host1.Open();
ServiceHost host2 = new ServiceHost(typeof(SOAP), new Uri("http://10.121.72.214:8090/soap"));
host2.AddServiceEndpoint(typeof(ISOAP), new WSDualHttpBinding(), "");
ServiceMetadataBehavior smb = host2.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (smb == null)
{
smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host2.Description.Behaviors.Add(smb);
host2.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
}
host2.Open();
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
Console.WriteLine("Host is opened.");
Console.ReadKey();
host1.Close();
host2.Close();
Also, wenn ich schreibe in http://localhost:8090/rest und http://localhost:8090/soap im Browser. Ich kann die Hilfeseite für REST und die SOAP-Dienste (WSDualHttpBinding) sehen. Ich bestätige auch, dass es Callback-Methode auf Client-Seite erfolgreich ausführen kann.
0
Bitte können Sie einfach WebHttpBinding wie diese
<webHttpBinding>
<binding
allowCookies="Boolean"
bypassProxyOnLocal="Boolean"
closeTimeout="TimeSpan"
hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
maxBufferPoolSize="integer"
maxBufferSize="integer"
maxReceivedMessageSize="Integer"
name="string"
openTimeout="TimeSpan"
proxyAddress="URI"
receiveTimeout="TimeSpan"
sendTimeout="TimeSpan"
transferMode="Buffered/Streamed/StreamedRequest/StreamedResponse"
useDefaultWebProxy="Boolean">
writeEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding"
<security mode="None/Transport/TransportCredentialOnly">
<transport clientCredentialType =
"Basic/Certificate/Digest/None/Ntlm/Windows"
proxyCredentialType="Basic/Digest/None/Ntlm/Windows"
realm="string" />
</security>
<readerQuotas maxArrayLength="Integer" maxBytesPerRead="Integer" maxDepth="Integer" maxNameTableCharCount="Integer" maxStringContentLength="Integer" />
</binding>
</webHttpBinding>
fügen Sie auch auf dieser Website für weitere Informationen verweisen kann wieder meine eigene Frage zu beantworten https://chsakell.com/2013/09/14/wcf-self-hosting-multiple-bindings/
Wie wäre es mit dem Wsdualhttpbinding? Beispiel dafür ist auf nettcp und basichttp statt. – user2742638