【问题标题】:How to get the Request in C#如何在 C# 中获取请求
【发布时间】:2013-11-26 19:11:47
【问题描述】:

我正在将一些数据发布到 Restful Webservice。 Web 服务是使用服务堆栈创建的。我想查看传入的整个请求(将其写入文件),但我无法弄清楚如何访问它。我想查看所有标题和正文以及与 POST 请求相关的任何其他内容。

有人对我如何访问它有任何想法吗?

【问题讨论】:

  • 您想从处理请求的程序中执行此操作吗?如果是在客户端上,我会建议 Fiddler 之类的 ;)
  • @JeffBridgman 没错,我想在服务器上执行此操作。我可以做 Fiddler,但我想让它自动化
  • @JeffBridgman 谢谢你,我确实看到了那个帖子。是和否,它有帮助。我能够成功查看标头,但无法找到查看整个请求的方法。我试过打电话给Request.GetRawBody,但这是空的。
  • Fiddler 有FiddlerCore 用于自动化...

标签: c# web-services rest servicestack


【解决方案1】:

如果您正在寻找内置解决方案,请考虑使用Request Logger。它默认提供一个内存记录器,但你可以继承IRequestLogger 并提供你自己的。您还可以通过查看其code 来了解内存中记录器如何访问请求。即使您推出自己的解决方案,您仍然应该能够重复使用来自InMemoryRollingRequestLogger 的代码。

【讨论】:

    【解决方案2】:

    我能够解决我的问题。你需要做的是为你的 DTO 使用类似的东西:

    public class RestServiceRequest : IRequiresRequestStream
    {
    
    
        public Stream stream;
        Stream IRequiresRequestStream.RequestStream
        {
            get
            {
                return stream;
            }
            set
            {
                stream = value;
            }
        }
    }
    

    然后您可以像这样访问服务中的原始正文:

    Request.GetRawBody();
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    相关资源
    最近更新 更多