将wcf服务请求重定向到内部地址

时间:2011-03-31 06:08:13

标签: wcf rest

现在我有一个公共Wcf REST服务A和几个内部wcf REST服务B,每个内部服务都按名称标识。是否可以在服务A中创建路由器/代理,然后,当用户请求服务A的接口时,它可以根据名称将请求重定向到内部服务?

我尝试使用:

WebOperationContext.Current.OutgoingResponse.Location = targetInternalPath;
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect; // or MovedPermanently

一切正常,除了我们在客户端获得的标题,以下是Fiddler的详细信息:

换句话说,客户端知道确切的内部地址,内容类型和内容长度不正确。一切都不是我想要的。几天来我一直在努力解决这个问题,任何人都有任何想法吗?

最诚挚的问候。

约翰尼

2 个答案:

答案 0 :(得分:0)

我很困惑。你在小提琴手中看到的正是你要求它做的。您的服务A正在返回重定向响应。客户端应该通过跟踪Location头中的URI来响应该重定向。

如果您确实想要隐藏内部服务,那么您需要使服务A像代理一样工作。它需要向内部服务本身发出请求,然后返回它返回的响应。

您是出于安全原因尝试隐藏内部服务还是提前客户不了解这些内部服务器?

答案 1 :(得分:0)

无法使用WCF RoutingService功能,因为它仅支持基于SOAP的绑定。您可以在MSDN论坛答案中使用Matthias建议的here的IIS 7 URL重写模块。您可以将其配置为将调用重定向到基于内部REST的服务(an overview of its use at this link).我不确定它是否有助于重写响应头内容,但值得一看。