konfigurieren der web.config (system.serviceModel) für eine Website, die spricht, um mehrere web-services (manche durch dlls)

Habe ich eine Lösung, die besteht aus einem web-Projekt und eine Klasse Bibliothek-Projekt. Die web-Projekt-Lösung, die direkt verweist auf einen wcf-Dienst. Es gibt einen 2. wcf-service, aber es ist das Klasse-Bibliothek-Projekt, die direkt verweist. Ich bin das hinzufügen der class library (output) als Verweis auf meine web-Projekt.

Also in meinem web-Projekt web.config habe ich jetzt zwei scf-Dienste konfiguriert. Dieser Prozess war einfach, da hatte ich manuell kopiert die app.config (system.serviceModel Teil) direkt auf der web.config und dann konfiguriert das web-Projekt sprechen Sie direkt mit einem anderen wcf-service (direkt, nicht durch irgendwelche dlls).

Mein web-Projekt braucht, um zu sprechen, um eine 3. web service (asmx). Ich wieder plan zu bringen, dies als eine Bibliothek-Klasse, und schließen Sie die dll in mein web-Projekt. (Dies ist eine separate Lösung). Wenn ich nahm einen Blick auf diese Besondere Klasse lib-Projekt " app.config, ich dachte, ich kopiere einfach nur die erforderlichen Abschnitte und führen Sie Sie entsprechend mit meiner aktuellen Website.config.

Also für die 3. Klasse lib-Projekt (der auf die asmx-service) habe ich zufällig bemerkt, dass es hatte, unter den Bindungen-Knoten, einen Knoten namens "basicHttpBinding", und weiter, ein customBinding. Dann weiter unter dem client-Knoten, es wurden zwei Endpunkt-Knoten, die den service-Parametern. (Ich verstehe nicht, warum sollte es zwei Endpunkte, hier in Erster Linie).

Also ich kopiert was kam unter den Bindungen-Knoten (ab der 3. Klasse lib prj-app.config) und angehängt, es auf den Bindungen-Knoten (im-web.config). Ich habe einen ähnlichen Prozess für das kopieren der Ende Punkte zu. Aber jetzt, wenn ich versuche, führen Sie die web-site bekomme ich eine Ausnahme, die hält zum Zeitpunkt der Initialisierung des soap-client (asmx-service): er sagt etwas wie die nicht in der Lage, um zu bestimmen, den Endpunkt für diesen Vertrag.

Web.config, bevor ich die asmx-web-service sieht wie folgt aus:

  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHttpBinding_IEmployeeService" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
            enabled="false" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
              algorithmSuite="Default" />
          </security>
        </binding>
        <binding name="WSHttpBinding_IHelper" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
            enabled="false" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
              algorithmSuite="Default" />
          </security>
        </binding>
      </wsHttpBinding>      
    </bindings>
    <client>
      <endpoint address="http://localhost:8731/Design_Time_Addresses/InfiniumIS/EmployeeService/"
        binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IEmployeeService"
        contract="InfiniumWS.IEmployeeService" name="WSHttpBinding_IEmployeeService">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
      <endpoint address="http://localhost:8732/Design_Time_Addresses/SQLIS/Service1/"
        binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IHelper"
        contract="SQLIS.IHelper" name="WSHttpBinding_IHelper">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>

Unten ist das service-Modell für das Projekt mit der asmx-service (aus der app.config)

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="ServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
                receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="Transport">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>
            <binding name="ServiceSoap1" closeTimeout="00:01:00" openTimeout="00:01:00"
                receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>
        </basicHttpBinding>
        <customBinding>
            <binding name="ServiceSoap12">
                <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
                    messageVersion="Soap12" writeEncoding="utf-8">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                </textMessageEncoding>
                <httpsTransport manualAddressing="false" maxBufferPoolSize="524288"
                    maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
                    bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
                    keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
                    realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
                    useDefaultWebProxy="true" requireClientCertificate="false" />
            </binding>
        </customBinding>
    </bindings>
    <client>
        <endpoint address="https://is.security/WebAppSec_WS/service.asmx"
            binding="basicHttpBinding" bindingConfiguration="ServiceSoap"
            contract="apps.intranet.ws.ServiceSoap" name="ServiceSoap" />
        <endpoint address="https://is.security/WebAppSec_WS/service.asmx"
            binding="customBinding" bindingConfiguration="ServiceSoap12"
            contract="apps.intranet.ws.ServiceSoap" name="ServiceSoap12" />
    </client>
</system.serviceModel>

Ich einfach zusammengeführt, die Abteilungen - Bedeutung kopiert, was auch immer kommen in die 2. config unter der Bindung Knoten, und appened es auf den 1. ein. Ich habe einen ähnlichen Prozess für das kopieren der Endpunkte.

ps: ich habe keine Ahnung, warum die 2. config (asmx) zeigt mir zwei Endpunkte?

  • Warum nicht einfach warten, bis Sie können den code?
  • ja, wir sind gonna brauchen etwas besseres Beispiel gibt ... oder eine Karte an 🙂
  • jup, sorry für die Verspätung, aber ich habe den Beispiel-code.
  • asmx-Dienste haben keine Bindungen. Verwenden Sie die Web-Referenz, erzeugt es andere Konfiguration.
InformationsquelleAutor deostroll | 2011-02-08
Schreibe einen Kommentar