Конечная точка WCF не работает на IIS (Express) - PullRequest
1 голос
/ 19 июля 2011

Я пытаюсь заставить конечную точку работать на IIS (Express). При отладке проекта в VS с IIS Express и открытии адреса конечной точки в моем браузере я просто получаю обычную ошибку 404.

Мой web.config:

<?xml version="1.0"?>
<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
      <behaviors>
        <serviceBehaviors>
          <behavior>
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug httpHelpPageEnabled="false" includeExceptionDetailInFaults="true"/>
          </behavior>
        </serviceBehaviors>
      </behaviors>
      <services>
        <service name="A.B.C">
          <host>
            <baseAddresses>
              <add baseAddress="http://localhost:15000"/>
            </baseAddresses>
          </host>
          <endpoint address="Test" binding="basicHttpBinding" contract="A.B.IC" bindingConfiguration="A.B.C">

          </endpoint>
        </service>
      </services>
      <bindings>
        <basicHttpBinding>
          <binding name="A.B.C"
                   maxBufferPoolSize="20971520"
                   maxBufferSize="2097152"
                   maxReceivedMessageSize="2097152">
          </binding>
        </basicHttpBinding>
      </bindings>
    </system.serviceModel>
</configuration>

Когда я помещаю .svc-Datei со следующим содержимым в корень сайта, он работает нормально:

<%@ ServiceHost Service="A.B.C" CodeBehind="Services/C.svc.cs" %>

Ответы [ 2 ]

1 голос
/ 19 июля 2011

При использовании хостинга IIS не следует указывать собственный базовый адрес. Базовый адрес для сервиса определяется местоположением файла .svc. Адрес конечной точки будет тогда относительно файла .svc

Файл .svc используется IIS для сопоставления запроса с WCF (а не, скажем, с ASP.NET).

Теперь вы можете иметь виртуальный файл .svc вместо физического, используя serviceActivations или если вы используете ASpNetCompaibility для полного удаления части .svc с помощью ServiceRoute как этой статьи показывает

0 голосов
/ 19 июля 2011

Я думаю, что вы ответили на свой вопрос.При размещении по HTTP вам необходим файл .svc, чтобы веб-сервер мог создать экземпляр службы.Другие привязки, такие как net.tcp или net.msmq, не имеют этого требования.

...