0

我正在尝试将来自我的 WCF 的请求路由到不同的 Web 服务(3.5 框架)。这甚至可能吗?如果是,请告诉我步骤。我需要从http://example.com/OldService.svc/Route路由到http://Newexample.com/NewService.svc/Request

以下是我尝试过的一些事情。大多数谷歌搜索返回网络表单的路由,我的要求是网络服务。

我在我的 OldService 项目 customroute 处理程序中尝试了以下内容:添加了对路由程序集的引用,配置了 web.config,在 Global.asax 中添加了以下代码

protected void Application_Start(object sender, EventArgs e)
    {
        RouteCollection routes = RouteTable.Routes;
        //routes.Add("SOAP",new Route("soap", new WebServiceRouteHandler("~/Services/SoapQuery.asmx")));
        routes.Add("SOAP", new Route("SOAP", new WebServiceRouteHandler("http://Newexample.com/NewService.svc/Request")));

    }

添加了一个 WebServiceRouteHandler 如下

 public class WebServiceRouteHandler: IRouteHandler
{
    private string _VirtualPath;

    public WebServiceRouteHandler(string virtualPath)
    {
        _VirtualPath = virtualPath;
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        return new WebServiceHandlerFactory().GetHandler(HttpContext.Current,
            "*",
            _VirtualPath,
            HttpContext.Current.Server.MapPath(_VirtualPath));
    }
}

我正在调用旧服务,但我仍然没有重定向到新服务。如果我在这里遗漏任何东西,请告诉我。我应该在我的 OldService Route 方法中添加任何东西吗?

4

1 回答 1

0

我不确定您所说的重定向到底是什么意思。

您是说当我尝试联系旧的 Web 服务时,您希望将 Web 服务客户端重定向到新的 Web 服务端点吗?

这通常是不可能的,因为服务没有“重定向”的概念。更不用说,如果您甚至尝试重定向到新服务,您的端点绑定将不再匹配,并且该服务也不会触发。

是否可以让旧服务调用新服务本身并返回结果?

如客户端 -> 连接旧服务 -> 旧服务连接新服务 -> 旧服务将新服务结果返回给客户端。

您还需要确保根据 WSDL 将准确的模式返回给客户端,否则您会发现读取响应时出现问题。

不确定这是否有帮助...

于 2013-09-18T06:51:17.920 回答