WCF, изменение базового адреса конечной точки - PullRequest
1 голос
/ 26 мая 2009

У меня есть несколько вопросов по поводу приведенного ниже файла конфигурации:

<system.serviceModel>
  <bindings />
  <services>
    <service behaviorConfiguration="WcfReporting.Service1Behavior"
             name="WcfReporting.Service1">
      <endpoint address="" 
                binding="basicHttpBinding" bindingConfiguration=""
                contract="WcfReporting.IService1">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding" 
                contract="IMetadataExchange" />
      <host>
        <baseAddresses>
          <add baseAddress="net.tcp://localhost:5050/" />
        </baseAddresses>
      </host>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="WcfReporting.Service1Behavior" >
        <!-- To avoid disclosing metadata information, set the value below to false 
             and remove the metadata endpoint above before deployment -->
        <serviceMetadata httpGetEnabled="true"/>
        <!-- To receive exception details in faults for debugging purposes, 
             set the value below to true. Set to false before deployment to 
             avoid disclosing exception information -->
        <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>
  1. Почему, когда я нажимаю F5, чтобы перезапустить службу, служба запускается с этого URL http://localhost:2752/ ... почему бы не 5050, как я указал в baseAddresses.

  2. Как я могу добавить другую конечную точку. Я пытался с конечной точкой address = "/ Address2" binding = "basicHttpBinding" contract = "WcfReporting.IService1" />

Как мне получить доступ к услуге не только с помощью http://localhost/VirtualDir/, но также с http://localhost/VirtualDir/address2 или как она работает?

Ответы [ 3 ]

3 голосов
/ 26 мая 2009

Если вы размещаете в Cassini из Visual Studio 2005 или более поздней версии, вы можете указать порт, используя Project / Properties / Web / Использовать Visual Studio Development Server / Specific Port.

По умолчанию порт будет назначаться автоматически, что не очень полезно для веб-служб, поскольку ваши клиенты, вероятно, захотят использовать фиксированный URL-адрес.

Вам не нужно указывать в файле конфигурации при хостинге в IIS или Cassini - базовый URL предоставляется веб-сервером. Элемент используется при самостоятельном размещении.

1 голос
/ 26 мая 2009

Как я могу добавить другую конечную точку. я пробовал с конечной точкой адрес = «/ Адрес2» связывание = "BasicHttpBinding" contract = "WcfReporting.IService1" />

Адреса, которые вы указываете в этой конечной точке, должны быть локальными и относительными - например, просто укажите

<endpoint address="Address2"
          binding="basicHttpBinding"
          contract="WcfReporting.IService1" />

и это создаст конечную точку по полному адресу

net.tcp://localhost:5050/Address2

Но, как уже указывал Дарин, - если вы используете IIS / WAS для размещения своей службы, виртуальный каталог, в котором находится файл * .svc, будет иметь приоритет, а указанные базовые адреса будут игнорироваться. Чтобы реально использовать базовые адреса, вам нужно самостоятельно разместить службу в консольном приложении или службе Windows.

Марк

0 голосов
/ 26 мая 2009

Если вы используете веб-сервер (например, Cassini или IIS) для размещения вашей службы WCF, базовый адрес будет предоставлен с этого сервера. Также обратите внимание, что вы не можете использовать привязки TCP через HTTP. Если вы хотите установить свойство базового адреса, вам нужно разместить службу самостоятельно (например, в службе NT, консоли или приложении Windows).

...