WCF wsHttpBinding 'algorithmSuite' kann nicht analysiert werden, Fehler

Ich bin mit VSTS 2008 + C# + .Net 3.0. Ich bin mit selbst-gehosteten WCF. Beim ausführen der folgenden Anweisung (host.Open()), gibt es die folgende Bindung nicht gefunden Fehler. Ich habe mein ganzes app.config-Datei, alle Ideen, was falsch ist?

ServiceHost host = new ServiceHost(typeof(MyWCFService));
host.Open();

Fehlermeldung,

Den Wert der Eigenschaft 'algorithmSuite' kann nicht analysiert werden. Der Fehler ist: Der Wert 'Aes128' ist keine gültige Instanz des Typs " System.ServiceModel.Sicherheit.SecurityAlgorithmSuite'.

EDIT1: ich habe verändert der Algorithmus Anzug option Standardwert, traf aber mit einem neuen Fehler bei der Ausführung von Open () Fehlermeldung, alle Ideen, was falsch ist,

Bindung Validierung fehlgeschlagen, da der WSHttpBinding unterstützt keine zuverlässige Sitzungen über transport-Sicherheit (HTTPS). Der Kanal Fabrik-oder service-host konnte nicht geöffnet werden. Verwenden Sie die message-Sicherheit für eine sichere zuverlässige messaging über HTTP.

Vollständige app.config,

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="MyBinding"
            closeTimeout="00:00:10"
            openTimeout="00:00:20"
            receiveTimeout="00:00:30"
            sendTimeout="00:00:40"
            bypassProxyOnLocal="false"
            transactionFlow="false"
            hostNameComparisonMode="WeakWildcard"
            maxReceivedMessageSize="100000000"
            messageEncoding="Mtom"
            proxyAddress="http://foo/bar"
            textEncoding="utf-16"
            useDefaultWebProxy="false">
          <reliableSession 
               enabled="false" />
          <security mode="Transport">
            <transport clientCredentialType="Digest"
               proxyCredentialType="None"
               realm="someRealm" />
            <message clientCredentialType="Windows"
           negotiateServiceCredential="false"
           algorithmSuite="Default"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service name="MyWCFService"
                behaviorConfiguration="mexServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="https://localhost:9090/MyService"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="MyBinding" contract="IMyService"/>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexServiceBehavior">
          <serviceMetadata httpsGetEnabled="True"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

vielen Dank im Voraus,
George

  • George, könnte ich einen Vorschlag machen hier, anstatt zu versuchen, Fehler in jeder iteration, könnten Sie eine Frage stellen detailliert, was Sie erreichen wollen und bitten Sie, die für Sie geeignete Konfigurationen? Es ist überhaupt nicht klar, was Sie versuchen, zu authentifizieren/autorisieren/sichern.
  • Ich möchte nur zu verwenden, wsHttpBinding um einen Dienst zu entwickeln, so einfach! Ich bin mit Integrierte Sicherheit von Windows bin ich in einer Windows-Domäne.
  • Wenn Sie auf Windows-Domäne - warum nicht netTcp ? Schneller, zuverlässiger, besser, weniger Aufwand? 🙂
  • Wenn Sie halten möchten, wsHttp, ich würde schalten Sie die reliableSession Einstellungen, und wahrscheinlich würde ich auch deaktivieren alle Sicherheitseinstellungen - so lange, wie Sie innerhalb Ihres Unternehmens auf einer Windows-Domäne ist, gibt es kaum ein Risiko ein Außenseiter-snooping in Ihre service-Kommunikation. Sicherheits-add-overhead und Komplexität.
  • Sicherheit deaktivieren: <security mode="None" /> und mit ihm getan werden! 🙂
  • Zuverlässige Sitzungen sind wahrscheinlich overkill, dann 🙂 Sie bedeuten im Grunde die Dinge kommen in einer bestimmten Reihenfolge, und Sie erhalten in MSMQ und andere lustige Dinge. Zusätzlich sollten Sie entweder auf transport-oder message authentication, beides ist übertrieben zu sagen die geringste! Wenn Sie wollen einfach nur die Windows-Authentifizierung innerhalb einer Domäne, die Sie nicht brauchen, um mit Mühe irgendwelche dieser wenn Sie host in IIS finden Sie unter codeproject.com/KB/WCF/WCFBasicHttpBinding.aspx
  • Ich glaube nicht, verwenden netTCP aus geschäftlichen Gründen, mein Chef will, veröffentlichen Sie zum internet in der Zukunft, so dass wir entwickeln standard-web-services-Schnittstelle und der Vertrag.
  • Ja, @Marc, ich habe versucht, Ihre unter nicht-Sicherheits-Bindung funktioniert. Aber ich muss auch https aktivieren. Ich habe alle meine https-version verbindlich Einstellungen in meinem ursprünglichen Beitrag, Sie wissen, was falsch ist und zu beheben, wie, um es mit https?
  • Ich bin nicht mit IIS und self-hosting. Ich brauche keine zuverlässigen Sitzung, und ich habe es ausgeschaltet. Ich brauche grundlegende Sicherheitsfunktionen wie https. Ich habe geschrieben (aktualisiert) alle meine aktuellen Einstellungen in meinem ursprünglichen post. Haben Sie irgendwelche Ideen, was falsch ist und zu beheben, wie, um es mit https?
  • man konnte immer setzen zwei Endpunkten - mit netTCP für die interne Kommunikation (schnell, zuverlässig, keine Sicherheit), und einen anderen für das Internet-Publikum über https mit wsHttpBinding.
  • Coole Idee, noch eine Frage, wie man https aktivieren (enable security-feature) von wshttpbinding, während auf dem client aktivieren Sie zum hinzufügen der service Referenz?

InformationsquelleAutor George2 | 2009-06-22
Schreibe einen Kommentar