自托管WebAPI要求两次

时间:2015-03-28 03:16:00

标签: asp.net asp.net-web-api self-hosting

我正在学习自我托管的网络api,owin / katana,我带着这个例子:

来源:http://pastebin.com/0hsiEsdP

我把它粘贴在pastebin上,因为在这里我一直得到"你的代码没有格式化#34;甚至在代码标签之间= \

因此,管道中有两个中间件,一个用于"记录"而另一个只是写一些东西作为回应。

当我执行它并在浏览器中打开URL时,它会打印" logging"消息两次,如下:

服务器已启动 [请求:: 1] [请求来自:: 1]

问题是:如果我只做了一次请求,它为什么要执行两次?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您记录请求uri,请执行以下操作:

Console.WriteLine("[Request from {0} to {1}]", context.Request.RemoteIpAddress, context.Request.Uri);

您会看到实际上有两个请求:

[Request from ::1 to http://localhost:8080/]
[Request from ::1 to http://localhost:8080/favicon.ico]

第二个是获取浏览器地址栏中显示的小图标。此外,这取决于浏览器:firefox将尝试获取favicon.ico一次,然后只发出单个请求。 Chome总是试图获得favicon。

出于测试目的,您可以使用Fiddler查看http流量,看看有什么令人兴奋的事情。此外,您可以使用一些工具直接发出原始HTTP请求(Fiddler,Postman,wget),因为浏览器可以在测试时执行您不需要或不想要的东西(比如获取图标,缓存等)。 / p>