4

我正在尝试在 ServiceStack 中构建一个服务,其唯一职责是解释请求并发送重定向响应。像这样的东西:

[Route("/redirect/", "POST")    
public class Redirect : IReturnVoid
{
    public string Something { get; set; }
}

public class RedirectService : Service
{
    public object Post(Redirect req)
    {
        // make some decisions about stuff

        return new HttpResult(){ StatusCode = HttpStatusCode.Redirect, Headers = {{HttpHeaders.Location, "place"}}};
    }
}

我使用 fiddler 进行了初始测试,设置了 application/json 的内容类型并创建了适当的请求正文。这完全符合预期:服务请求给出了 302 响应并重定向到预期的位置。

我还使用一个基本的 Html 表单帖子对此进行了测试,动作为http://myserviceuri/redirect/,它也可以按预期工作并适当地重定向。

但是,我在尝试使用 SS c# 客户端调用相同的服务时遇到了问题。如果我在后面的 aspx 代码或 mvc 控制器中调用以下代码

var client = new JsonServiceClient("uri);

client.post(new Redirect{Something = "something});

我收到 500 和错误消息:

The remote certificate is invalid according to the validation procedure.

这是有道理的,因为它是一个具有自我证书的开发服务器。但我感觉,因为我可以通过其他方式成功调用该服务,所以这是一个红鲱鱼。

我应该使用不同类型的 c# 客户端来发出请求,还是设置更多自定义标头或其他内容?我从根本上不理解我想要做什么吗?

如果需要更多信息,请告诉我。谢谢。

4

1 回答 1

1

这里发生的是,JsonServiceClient很高兴地跟随重定向,做的比你预期的要多。

我会为后代参考一个相关的问题和答案( - 希望你很久以前就解决了这个问题......)。

POST 到 ServiceStack 服务并检索 Location Header

本质上,您将使用WebRequest答案中提到的 .net 或 ServiceStack 扩展来查看重定向并按照您认为合适的方式行事。

于 2014-02-04T06:15:45.450 回答