【问题标题】:URL routing in WCF/web serviceWCF/Web 服务中的 URL 路由
【发布时间】:2013-09-18 06:40:13
【问题描述】:

我正在尝试将来自 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 方法中添加任何东西吗?

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 感谢您的回复..是的,我想从旧服务重定向到新服务..就像我们在 Web 表单中的 ASP.net url 路由中拥有它......如果这是不可能的,我的最后一个选择是让旧服务调用新服务本身并返回结果..
    • @Sahana 对这个坏消息感到抱歉,但您可能不得不选择最后一个选项,因为这种性质的服务无法进行重定向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多