WCF 4路由服务引发处理程序错误

时间:2014-09-22 14:46:19

标签: web-services wcf rest routing

我正在尝试以声明方式使用WCF 4路由将我的(REST)Web服务的一个分支重定向到备用服务器。我将WCF的System.ServiceModel.Routing.RoutingService配置为将http://oldserver:81/FileService/电话路由到http://newserver:82/FileService/,但是当我尝试访问重定向的服务时,它只会抛出错误

Handler "HttpLogging" has a bad module "HttpLoggingModule" in its module list

我可以在浏览器中输入新服务的URL,但它们运行正常,但旧服务的URL(要重新路由)失败。

我已将以下路由配置添加到我的Web服务应用程序中:

<configuration>
    <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
        <behaviors>
            <serviceBehaviors>
                <behavior name="routingConfig">
                    <!-- Specify the routing table to use. -->
                    <routing filterTableName="routingTable1" />
                    <serviceDebug includeExceptionDetailInFaults="true" />
                    <serviceMetadata httpGetEnabled="true" />
                </behavior>
            </serviceBehaviors>
        <!-- WCF routing table -->
        <routing>
            <filters>
                <filter name="FileFilter1" filterType="EndpointName" filterData="FileService"/>
            </filters>
            <filterTables>
                <filterTable name="routingTable1">
                    <add filterName="FileFilter1" endpointName="FileService" />
                </filterTable>
            </filterTables>
        </routing>
        <client>
            <!-- Destination endpoint defining the base URL where File messages will be routed. -->
            <endpoint name="FileService"
                      address="http://newserver:82/FileService/"
                      binding="webHttpBinding"
                      contract="*" />
        </client>
        <services>
            <!-- WCF routing service. -->
            <service name="System.ServiceModel.Routing.RoutingService" behaviorConfiguration="routingConfig" >
                <host>
                    <baseAddresses>
                        <!-- The service endpoint to be redirected. -->
                        <add baseAddress="http://oldserver:81/FileService" />
                    </baseAddresses>
                </host>
                <!-- Define the endpoints of the service to receive messages. -->
                <endpoint name="reqReplyEndpoint" binding="webHttpBinding" contract="System.ServiceModel.Routing.IRequestReplyRouter" address="" />
            </service>
        </services>

应用程序中不再有FileService服务,除了路由服务应该公开的服务。

我试过了:

  • 过滤MatchAll,EndpointAddress和PrefixEndpointAddress的类型;
  • 各种形式的旧服务地址;
  • 过滤器,路由表,服务的不同名称;
  • 重新命名合同。

它没有让我的客户端调用重定向的服务,甚至没有任何迹象表明路由服务是可操作的,甚至根本没有配置。

如何使路由实际工作?如果不这样做,我将如何调试它以便确定要修复的内容?

1 个答案:

答案 0 :(得分:1)

我看到的一般问题是您尝试使用路由服务路由REST呼叫,这是不受支持的。 MSDN参考:

https://msdn.microsoft.com/en-us/library/ee517423.aspx

  

路由服务当前不支持WCF REST的路由   服务。要路由REST调用,请考虑使用System.Web.Routing或   应用请求路由   (http://go.microsoft.com/fwlink/?LinkId=164589)。   块引用