ServiceStack 请求 POST 正文作为查询字符串

ServiceStack request POST body as query string

我正在尝试在 C# 中实现 IPN 处理程序,并且我正在使用 ServiceStack 作为我的后端框架。但是,我面临以下问题;

我试图找到一种方法将请求的 POST 正文作为查询字符串,但我没有这样做。我正在使用 IRequest.GetRawBody();但是 POST 数据以格式化的方式返回以使其可读。

有没有什么办法可以方便的把POST的body当成querystring?我想要类似于 PHP 的 $_POST 的东西,这样我就可以使用 HMAC SHA256 加密数据,但我可以找到一种方法来做到这一点,而无需编写带有硬编码详细信息的助手 class POST 请求正文。我试过在线搜索和 ServiceStack 的文档,但没有找到任何有用的东西。

非常感谢任何帮助,在此先感谢!

QueryString 在 URL 而不是请求正文中。如果你只想访问发布的原始请求主体,你可以让你的 Request DTO implement IRequiresRequestStream 告诉 ServiceStack 跳过反序列化主体,这样你就可以自己反序列化它,例如:

public class MyRequest : IRequiresRequestStream
{
    public Stream RequestStream { get; set; }
}
public class MyServices : Service
{
    public object Any(MyRequest request)
    {
        var bytes = request.RequestStream.ReadFully();
        var text = bytes.FromUtf8Bytes();
        ...
    }
}