Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取南希请求信息_C#_Sinatra_Nancy - Fatal编程技术网

C# 获取南希请求信息

C# 获取南希请求信息,c#,sinatra,nancy,C#,Sinatra,Nancy,我刚开始看Nancy,我正在使用Tekpub的Sinatra视频(Nancy是基于这个视频的),看看它能做些什么。视频中演示的一件事是将请求信息输出回浏览器(请求方法、请求路径等)。当我使用ASP.NETWeb表单时,我可以在请求对象中获得这些信息,但在文档中我没有看到任何说明如何在Nancy中实现这一点的内容。我知道Nancy.Request对象中有一个Headers字段,但它没有提供我要查找的所有信息。下面是我想转换成C#和Nancy的原始Sinatra代码: class HelloWorl

我刚开始看Nancy,我正在使用Tekpub的Sinatra视频(Nancy是基于这个视频的),看看它能做些什么。视频中演示的一件事是将请求信息输出回浏览器(请求方法、请求路径等)。当我使用ASP.NETWeb表单时,我可以在请求对象中获得这些信息,但在文档中我没有看到任何说明如何在Nancy中实现这一点的内容。我知道Nancy.Request对象中有一个Headers字段,但它没有提供我要查找的所有信息。下面是我想转换成C#和Nancy的原始Sinatra代码:

class HelloWorld
     def call(env)
          out = ""
          env.keys.each {|key| out+="#{key}=#{env[key]}"}
          ["200",{"Content-Type" => "text/plain"}, out]
     end
 end

 run HelloWorld.new

你是说像这样的

Get["/test"] = _ =>
{
    var responseThing = new
    {
        this.Request.Headers,
        this.Request.Query,
        this.Request.Form,
        this.Request.Session,
        this.Request.Method,
        this.Request.Url,
        this.Request.Path
    };

    return Response.AsJson(responseThing);
};
这将为您提供如下输出:

{
   "Form":{

   },
   "Headers":[
      {
         "Key":"Cache-Control",
         "Value":[
            "max-age=0"
         ]
      },
      {
         "Key":"Connection",
         "Value":[
            "keep-alive"
         ]
      },
      {
         "Key":"Accept",
         "Value":[
            "text/html;q=1",
            "application/xhtml+xml;q=1",
            "application/xml;q=0.9",
            "*/*;q=0.8"
         ]
      },
      {
         "Key":"Accept-Encoding",
         "Value":[
            "gzip,deflate,sdch"
         ]
      },
      {
         "Key":"Accept-Language",
         "Value":[
            "en-US,en;q=0.8"
         ]
      },
      {
         "Key":"Host",
         "Value":[
            "localhost:2234"
         ]
      },
      {
         "Key":"User-Agent",
         "Value":[
            "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.29 Safari/537.36"
         ]
      }
   ],
   "Method":"GET",
   "Path":"/test",
   "Query":{
      "23423":"fweew"
   },
   "Session":[

   ],
   "Url":{
      "BasePath":null,
      "Fragment":"",
      "HostName":"localhost:2234",
      "IsSecure":false,
      "Path":"/test",
      "Port":null,
      "Query":"23423=fweew",
      "Scheme":"http",
      "SiteBase":"http://localhost:2234"
   }
}
您还可以按照此处wiki中的描述获取Owin环境变量


当我自己使用调试器进行一些挖掘时,有一些我没有看到的项目显示在Sinatra中,例如服务器协议。所以我只是想确保我没有遗漏什么。也许这只是两个框架之间的区别,但我认为在假设任何事情之前,我至少应该确定。很公平,我不能说我需要所有这些信息:)我忘了提到还有Owin环境变量。没错,这只是在Sinatra中重新创建正在做的事情的练习,所以其实没那么重要。谢谢。请求url将包括协议。@dustin-片段标识符仅为客户端标识符。“其处理完全是客户端的,没有web服务器的参与”-浏览器不会将其发送到服务器。