Сервисный Базовый адрес WCF Http и netTcp

У меня есть два базовых адреса, определенные в моем Сервисном файле конфигурации WCF:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>      
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Warning, ActivityTracing"
        propagateActivity="true">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type="" />
          </add>
          <add name="ServiceModelTraceListener">
            <filter type="" />
          </add>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\WCF Service Logs\app_tracelog.svclog"
        type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
        name="ServiceModelTraceListener" traceOutputOptions="DateTime, Timestamp">
        <filter type="" />
      </add>
    </sharedListeners>
  </system.diagnostics>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="netTcp" maxBufferPoolSize="50000000" maxReceivedMessageSize="50000000">
          <readerQuotas maxDepth="500" maxStringContentLength="50000000" maxArrayLength="50000000" maxBytesPerRead="50000000" maxNameTableCharCount="50000000" />
          <security mode="None"></security>
        </binding>
      </netTcpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="ReportingComponentLibrary.TemplateServiceBehavior"
        name="ReportingComponentLibrary.TemplateReportService">
        <endpoint address="TemplateService" binding="netTcpBinding" bindingConfiguration="netTcp"
          contract="ReportingComponentLibrary.ITemplateService"></endpoint>
        <endpoint address="ReportService" binding="netTcpBinding" bindingConfiguration="netTcp"
          contract="ReportingComponentLibrary.IReportService"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8001/TemplateReportService" />
            <add baseAddress="http://localhost:8181/TemplateReportService"  />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ReportingComponentLibrary.TemplateServiceBehavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="True" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

И хотя я установил конечную точку, связывающую как netTcpBinding,
Я только могу получить доступ к своему сервису WCF с базовым адресом:

http://localhost:8181/TemplateReportService

а не с

net.tcp://localhost:8001/TemplateReportService

Как я могу сделать свой сервисный доступ с адресом netTcp?

10
задан abatishchev 22 April 2011 в 13:13
поделиться

1 ответ

Вы определили базовый адрес Net.TCP следующим образом:

net.tcp://localhost:8001/TemplateReportService

Ваши конечные точки с Net TCP:

<endpoint address="TemplateService" 

и

<endpoint address="ReportService" 

Таким образом, их полный сервисный адрес будет "базовый адрес netTcp" + "относительный адрес, определенный на элементе " - это дает:

net.tcp://localhost:8001/TemplateReportService/TemplateService

и

net.tcp://localhost:8001/TemplateReportService/ReportService

со всем уважением.

Можете ли вы использовать их по этим адресам??

Также - вы определили конечную точку "mex" (обмен метаданными) для протокола HTTP - вот почему вы можете что-то видеть, когда переходите к HTTP адресу. Но вы не указали конечную точку MEX для netTcp.

16
ответ дан 3 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: