Не удается добавить ссылку на службу в VS 2010 в конечную точку net.tcp - PullRequest
0 голосов
/ 16 сентября 2010

У меня запущена служба (ну, она не падает), но когда я пытаюсь добавить ссылку на службу, я получаю:

Метаданные содержат ссылку, которая не может быть разрешена: 'net.tcp: // localhost: 55555 / mex'. Метаданные содержат ссылку, которая не может быть разрешена: «net.tcp: // localhost: 55555 / mex». Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу.

Соответствующие части моего файла конфигурации:

    <netTcpBinding>
 <binding name="ReliableDuplexBinding" closeTimeout="00:00:10"
     openTimeout="00:00:10" receiveTimeout="00:00:30" sendTimeout="00:00:15"
     maxBufferPoolSize="1048576" maxBufferSize="262144" maxReceivedMessageSize="262144">
   <readerQuotas maxDepth="33" maxStringContentLength="100000" maxArrayLength="131072"
      maxBytesPerRead="262144" maxNameTableCharCount="54000" />
   <reliableSession inactivityTimeout="05:00:00" enabled="true" />
   <security mode="None">
    <transport>
     <extendedProtectionPolicy policyEnforcement="Never" />
    </transport>
   </security>
 </binding>
</netTcpBinding>
  <behaviors>
   <serviceBehaviors>
    <behavior name="DefaultServiceBehavior">
     <serviceMetadata httpGetEnabled="false" />
     <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
   </serviceBehaviors>
  </behaviors>
<services>
   <service behaviorConfiguration="DefaultServiceBehavior" name="Cad.Server.RccInboxService">
    <endpoint address="RccInterface" binding="netTcpBinding" bindingConfiguration="ReliableDuplexBinding"
     name="Cad.Server.RccInboxService" contract="Cad.Net.Wcf.Contracts.IRccUserInterface" />
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" name="Cad.Server.mex" />
    <host>
     <baseAddresses>
      <add baseAddress="net.tcp://localhost:55555" />
     </baseAddresses>
     <timeouts closeTimeout="00:01:00" />
    </host>
   </service>
  </services>

Служба размещается самостоятельно, и, кажется, работает следующий код, но я не могу добраться до точки, где будет создана ссылка на службу:

Public Sub StartServiceHost()
   'Publish the Wcf Service endpoint.
   Try
    shRccUserInterface = New ServiceHost(Me._RccInboxService)
    AddHandler shRccUserInterface.Faulted, AddressOf OnChannelFaulted
    AddHandler shRccUserInterface.Closed, AddressOf OnChannelClosed
    AddHandler shRccUserInterface.Opened, AddressOf OnChannelOpened
    AddHandler shRccUserInterface.Opening, AddressOf OnChannelOpening
    AddHandler shRccUserInterface.UnknownMessageReceived, AddressOf OnUnknownMessageReceived

    Me.bndRccUserInterface = New NetTcpBinding("ReliableDuplexBinding")
    Dim ep As Description.ServiceEndpoint
    With shRccUserInterface
     ep = .AddServiceEndpoint(GetType(Cad.Net.Wcf.Contracts.IRccUserInterface), bndRccUserInterface, String.Empty)
     RaiseEvent ShowUserMessageEvent(Me, "Opening Endpoint: " & ep.Address.ToString, UtaCommon.Interfaces.StatusListEntryType.Information)
     .Open()
    End With
    Me.blnServiceHostOpen = True
    RaiseEvent ServiceHostOpenEvent(Me)
   Catch exWcf As Exception
    log.Write_Error("RccGuiComm", "StartServiceHost()", exWcf)
    RaiseEvent SendUtaEmailEvent("Wcf Problem", exWcf.ToString, System.Net.Mail.MailPriority.High)
   End Try
  End Sub

Служба должна быть размещена самостоятельно. Я боролся с этим некоторое время. Буду очень признателен, если кто-нибудь сможет помочь.

Лучшее

Jason

1 Ответ

0 голосов
/ 16 сентября 2010

Вы можете использовать конечную точку http mex, даже если вашей основной конечной точкой является nettcp.

http://jeffbarnes.net/blog/post/2006/10/16/Metadata-Exchange-Endpoint.aspx

Убедитесь, что у вас есть:

<serviceMetadata httpGetEnabled="true" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...