Pregunta

Tengo esta aplicación. Config en mi biblioteca de servicios WCF:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="addr" value="net.tcp://localhost:22222/AdministrationService/"/>
  </appSettings>
  <system.serviceModel>
    <services>
      <service name="Watchman.WcfService.AdministrationService" behaviorConfiguration="MyBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:22222/AdministrationService/"/>
          </baseAddresses>
        </host>
        <endpoint name="Ep1" address="net.tcp://localhost/AdministrationService/" binding="netTcpBinding" bindingConfiguration="DuplexBinding" contract="Watchman.WcfService.Interfaces.IAdministration"/>
        <endpoint name="mex" address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="MyBehavior">
          <serviceThrottling maxConcurrentSessions="10000"/>
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost/AdministrationService/Ep1/wsdl"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <bindings>
      <netTcpBinding>
        <binding name="DuplexBinding" sendTimeout="00:00:01">
          <reliableSession enabled="true"/>
          <security mode="None"/>
        </binding>
      </netTcpBinding>
    </bindings>
  </system.serviceModel>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
  </startup>

</configuration>

Pero recibí un error:

"The Address property on ChannelFactory.Endpoint was null.  The ChannelFactory's Endpoint must have a valid Address specified."

Parece que la aplicación no es este punto final TCP.NET. ¿Por qué?

¿Fue útil?

Solución 3

Acabo de notar que SVCutil genera un punto final malo en el proyecto del cliente WCF. Hay

<endpoint binding="basicHttpBinding"
          bindingConfiguration="DefaultBinding_IAdministration" 
          contract="IAdministration" 
          name="DefaultBinding_IAdministration_IAdministration" />"

en lugar de mi net.tcp punto final.

También observé que se debe a la generación de ProxyFile.cs y App.config de

svcutil WcfServiceLibrary.dll

Si genero estos archivos de metadatos como:

svcutil net.tcp://localhost:8080/AdministrationService/mex /language:C# /out:ProxyFile.cs /config:App.config

Luego funciona bien (en la configuración de la aplicación se describe correctamente net.tcp endpoint)

¿Alguien sabe por qué la cooperación svcutil con *.dll sale mal?

Otros consejos

Tengo esta aplicación. Config en mi biblioteca de servicios WCF

No puede tener una aplicación. No tiene sentido. Los archivos de configuración como App.config se definen en el proyecto final de aplicación ejecutable (como una aplicación de consola, WinForms, WPF, ...). O si se trata de una aplicación web, usa un Web.Config. Pero no hay tal cosa como App.Config para una biblioteca de clases. Por lo tanto, es posible que deba incluir esta configuración de WCF en la aplicación/web.config de la aplicación utilizando su biblioteca de clases.

Ha especificado una dirección base para net.tcp, por lo que la dirección en el punto final net.tcp se convierte en una dirección relativa. Entonces, efectivamente, la dirección del punto final se convierte en net.tcp: // localhost: 22222/administrationservice/localhost/administrationservice/.

Cambie la dirección en el punto final a una dirección relativa y vuelva a generar la clase proxy usando svcutil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top