从 WCF REST 函数重定向到另一个 URL,而不返回 HTTP 302

本文关键字:返回 HTTP URL 另一个 REST WCF 函数 重定向 | 更新日期: 2023-09-27 18:32:58

我有一个REST服务,它得到一个GET请求,我希望它能够重定向到三个URL之一,而不必发送http 302错误和新url。

    [OperationContract(Name = "MyService")]
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/myservice/{option}")]
    public System.IO.Stream MyService(String option)

这就是我定义它的方式,但是当我查看WebOperationContext.Current.OutgoingResponse时,我没有重定向方法。

有没有办法自动执行此操作? 我希望这样做的原因是这个网络服务可能被程序调用,在程序上不必捕获 302 错误然后手动执行重定向会更简单。

看起来正确的方法是遵循以下内容:http://christopherdeweese.com/blog2/post/redirecting-from-a-wcf-rest-service

并这样做:

WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect;
WebOperationContext.Current.OutgoingResponse.Location = "/someOtherPage.aspx";
return null; 

我只是希望找到另一种解决方案。

从 WCF REST 函数重定向到另一个 URL,而不返回 HTTP 302

重定向始终是客户端功能。服务器只是通知客户端资源在其他地方。除了将此重定向完全隐藏到与当前操作分开的服务调用之外,没有什么比服务器端重定向更像了。

顺便说一句,REST是

关于统一接口的,重定向(3xx)是这个接口的一部分,所以如果你创建REST服务并且你想要这样的功能,你应该以共同的方式使用它。REST 客户端负责正确处理统一接口。