Конечные точки WCF не работают с хостингом IIS

у меня следующие настройки

<services>
    <service name="HelloWCFServiceClass.clsHelloWCFServiceClass" >
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:6789/IISHosting/HelloWorldISSHostedService.svc"/>
        </baseAddresses>
      </host>
      <endpoint address="" binding="wsHttpBinding"  contract="HelloWCFServiceContract.IHelloWCFServiceContract" />
      <endpoint address="/test" binding="basicHttpBinding"
                         contract="HelloWCFServiceContract.IHelloWCFServiceContract"/>
    </service>
</services>

я могу открыть

http://{ServerName}:6789/HelloWorldISSHostedService.svc

Но я получаю сообщение об ошибке

Веб-страница не может быть найдена

при попытке доступа через конечную точку, подобную этой

http://{ServerName}:6789/HelloWorldISSHostedService.svc/test

person user2589824    schedule 06.08.2013    source источник


Ответы (2)


Вы используете BasicHttpBinding — это привязка SOAP, вы не можете просто использовать свой браузер для перехода к этой конечной точке.

Вам нужно будет использовать что-то вроде SoapUI для тестирования ваших служб SOAP.

Если вам нужна служба, которую можно протестировать в браузере (просто переходя по URL-адресу), вам нужно вместо этого использовать webHttpBinding (служба REST).

person marc_s    schedule 06.08.2013
comment
Я изменил BasicHttpBinding на wsHttpBinding, но не могу открыть http://{ServerName}:6789/HelloWorldISSHostedService.svc/test. Получение HTTP 400 Bad Request Я просто хочу добавить несколько конечных точек в свое приложение WCF - person user2589824; 07.08.2013
comment
@ user2589824: если вы размещаетесь в IIS, то ваш базовый адрес в файле конфигурации бесполезен — реальный адрес службы определяется именем хоста IIS, виртуальным каталогом, в котором находится ваш *.svc файл, и имя самого файла *.svc. - person marc_s; 07.08.2013
comment
@user2589824: плюс: даже если ваш базовый адрес в конфигурации будет работать — ваш URL-адрес, на который вы переходите, не соответствует тому, что вы настроили: ваш файл конфигурации имеет .../IISHosting/....., а в используемом вами URL-адресе отсутствует часть IISHosting.... - person marc_s; 07.08.2013
comment
да, я использую хостинг IIS. в этом случае какой будет URL? - person user2589824; 07.08.2013
comment
@user2589824: Я только что объяснил это! Это http://YourServerName/YourVirtualDirectory/HelloWorldIISHostedService.svc .... - person marc_s; 07.08.2013
comment
то в этом случае, если у меня есть две конечные точки с адресом =/test и адресом =/test2, то как я могу использовать обе конечные точки. - person user2589824; 07.08.2013
comment
@ user2589824: хм.... действительно ли ваш файл HelloWorldISSHostedService.svc находится в корне вашей структуры IIS? Можете ли вы проверить в диспетчере IIS? Как правило, это что-то вроде http://(servername)/VirtualDirectoryName/HelloWorldISSHostedService.svc — обычно вы храните это в виртуальном каталоге (или приложении) внутри IIS... также: обычно IIS использует порт 80 ( а не что-то вроде 6789) в качестве его HTTP-порта... - person marc_s; 07.08.2013

Если ваша служба является частью проекта MVC, вам необходимо настроить таблицу маршрутизации.

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

person Marcus K    schedule 06.08.2013