0

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

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

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

有没有办法自动做到这一点?我希望这样做的原因是该 Web 服务可能被程序调用,并且在程序上不必捕获 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; 

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

4

1 回答 1

4

重定向始终是客户端功能。服务器只是通知客户端资源在别处。没有什么能像服务器端重定向一样,除了将这个重定向完全隐藏到您当前操作的单独服务调用中。

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

于 2012-05-03T12:11:11.523 回答