2010-07-19 145 views
0

是否有可能在WCF 4中爲REST基礎服務使用新的WCF路由服務?我有一些類似於逆向代理的想法。基本上我有一些selfhosted rest基於serivces,我想通過IIS公開與相同的基礎URL和端口。路由應該由url的最後部分完成。我是WCF路由服務的絕對新手,所以如果這是一個愚蠢的問題,請原諒我,但我在網上找不到任何有關此信息的信息。.net 4 WCF路由服務+ REST

我已經試過這樣的事情(其中serivce1/2是selfhosted服務):

<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是自託管服務的基地址,而不是實際的端點。我可以根據基地址進行路由嗎(如果可以休息路由),我是否必須爲每個端點添加路由?

+0

我認爲這可能會錯過WCF路由服務。我將使用像ARR這樣的「真正」反向代理。 – Jeldrik 2010-07-26 15:41:51

回答

1

我通過使用反向代理(在我的情況下arr)解決了這個問題。我不知道如果爲此目的使用WCF路由服務是可能的,但它可能是一種濫用。

+0

爲了詳細闡述這條細節,我必須安裝ARR擴展,然後在iis中啓用代理以允許將URL重寫到其他主機,然後在我的wcf路由服務web.config中創建重寫規則,以便這兩個soap和直接的HTML獲取處理有點透明。對於不那麼簡單的網頁內容,可能需要一些出站規則。 – LOAS 2012-08-15 10:18:35

1

路由服務僅適用於SOAP請求。要使用RESTful WCF進行路由,您需要使用類似於MVC路由的System.Web.Routing來設置路由。