Asp.net 自托管WebAPI请求了两次

Asp.net 自托管WebAPI请求了两次,asp.net,asp.net-web-api,self-hosting,Asp.net,Asp.net Web Api,Self Hosting,我正在学习自托管web api,owin/katana,我附带了以下示例: 资料来源: 我将它粘贴到pastebin上,因为在这里,即使在代码标记之间,我也会不断得到“您的代码未格式化”=\ 因此,管道中有两个中间件,一个用于“日志记录”,另一个用于编写响应 当我执行它并在浏览器中打开url时,它会打印“logging”消息两次,如下所示: Console.WriteLine("[Request from {0} to {1}]", context.Request.RemoteIpAddress

我正在学习自托管web api,owin/katana,我附带了以下示例:

资料来源:

我将它粘贴到pastebin上,因为在这里,即使在代码标记之间,我也会不断得到“您的代码未格式化”=\

因此,管道中有两个中间件,一个用于“日志记录”,另一个用于编写响应

当我执行它并在浏览器中打开url时,它会打印“logging”消息两次,如下所示:

Console.WriteLine("[Request from {0} to {1}]", context.Request.RemoteIpAddress, context.Request.Uri);
服务器启动 [请求来自::1] [请求来自::1]

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


谢谢

如果记录请求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


出于测试目的,您可以使用查看http通信量,并查看发生了什么。此外,您还可以使用一些工具直接发出原始HTTP请求(Fiddler、Postman、wget),因为浏览器可以在测试时执行您不需要或不想要的操作(如获取favicon、缓存等)。

非常感谢=D非常聪明的观察,还感谢工具提示