Web Services 如何从Web服务环境返回302重定向

ckocjqey  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(215)

我在一个休息的服务环境中,我们使用ServiceStack作为我们的服务框架,此时,我需要直接从服务进行重定向,但当我尝试从Get方法进行重定向时,它失败了,因为我认为我的Get函数看起来像这样:

public override object OnGet(ShareDTO request)
        {               
           HttpContext.Current.Response.Redirect(@"http://www.google.com");
            return new object();
        }

可能是因为首先它试图重定向,然后它试图返回一个值,但这只是胡乱猜测。我不确定它是否甚至可能在服务环境中,因为所有的时间,每当我使用响应。重定向,它总是总是一个.NET aspx页面,从来没有尝试在服务环境中。
有什么想法吗?

yv5phkfx

yv5phkfx1#

最简单的方法是只返回一个自定义的HttpResult,例如:

public object Any(Request request)
{
    return HttpResult.Redirect("http://www.google.com");
}

它相当于更明确的:

return new HttpResult
{
    StatusCode = HttpStatusCode.Found,
    Headers =
    {
        { HttpHeaders.Location, "http://www.google.com" },
    }
};

或者,您可以直接写入响应,无论是在Request Filter中还是在服务中,例如:

public object Any(Request request)
{
    base.Response.StatusCode = 302;
    base.Response.AddHeader(HttpHeaders.Location, "");
    base.Response.EndRequest();
    return null;
}

相关问题