Служба маршрутизации .net 4 WCF + REST - PullRequest
0 голосов
/ 19 июля 2010

Можно ли использовать новую серию маршрутизации WCF в WCF 4 для служб на основе REST? Я имею в виду нечто похожее на обратный прокси. По сути, у меня есть несколько сервисов, основанных на самообслуживании, которые я хочу показать через IIS с тем же базовым URL и портом. Маршрутизация должна быть сделана последней частью URL. Я абсолютно новичок в службе маршрутизации WCF, так что простите меня, если это глупый вопрос, но я не смог найти никакой информации об этом в Интернете.

Я пробовал что-то вроде этого (где serivce1 / 2 - сервисы самообслуживания):

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="RoutingBehavior">
                <routing routeOnHeadersOnly="false" filterTableName="RoutingTable"/>
                <serviceDebug includeExceptionDetailInFaults="true"/>
                <serviceMetadata httpGetEnabled="true"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="RoutingBehavior" name="System.ServiceModel.Routing.RoutingService">
            <endpoint address="myservices" contract="System.ServiceModel.Routing.IRequestReplyRouter" binding="basicHttpBinding"/>
        </service>
    </services>
    <routing>
        <filterTables>
            <filterTable name="RoutingTable">
                <add filterName="service1Filter" priority="0" endpointName="service1"/>
                <add filterName="service2Filter" priority="0" endpointName="service2"/>
            </filterTable>
        </filterTables>
        <filters>
            <filter name="service1Filter" filterType="MatchAll"/>
            <filter name="service2Filter" filterType="MatchAll"/>
        </filters>
    </routing>
    <client>
        <endpoint address="http://somehost:8888/test/service1" binding="basicHttpBinding" contract="*" name="service1"/>
        <endpoint address="http://somehost:8732/test/service2" binding="basicHttpBinding" contract="*" name="service2"/>
    </client>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>

но это не похоже на работу. Я получаю конечную точку не найдено исключение. http://somehost:8888/test/service1 - это базовый адрес службы самообслуживания, а не фактическая конечная точка. Могу ли я выполнить маршрутизацию на основе базового адреса или (если возможна маршрутизация покоя) я должен добавить маршрут для каждой конечной точки?

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Служба маршрутизации доступна только для запросов SOAP. Чтобы использовать маршрутизацию с RESTful WCF, вам необходимо настроить маршруты с помощью System.Web.Routing, аналогичной маршрутизации MVC.

1 голос
/ 01 сентября 2010

Я решил проблему с помощью обратного прокси (в моем случае arr). Я не знаю, возможно ли использование службы маршрутизации WCF для этой цели, но, вероятно, это неправильное использование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...