【问题标题】:Redirect the wcf service request to a internal address将 wcf 服务请求重定向到内部地址
【发布时间】:2011-03-31 06:08:12
【问题描述】:

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

我尝试使用:

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

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

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

最好的问候。

约翰尼

【问题讨论】:

    标签: wcf rest


    【解决方案1】:

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

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

    您是出于安全原因试图隐藏内部服务,还是只是客户端事先不知道这些内部服务器?

    【讨论】:

    • 您好,感谢您的回复。我只是想根据服务名称将服务A接受的请求重定向到内部服务。
    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复,我认为 IIS 7 Rewrite Module 适合我,但我的应用程序用于 SDK,我不希望客户下载额外的设置。
    猜你喜欢
    • 2021-06-24
    • 2016-12-16
    • 2017-12-08
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多