监听浏览器的请求使用如下代码:HttpListenerlistener=newHttpListener();//listener.Prefixes.Add("http://*:80/");listener.Prefixes.Add("http://*:8080/");listener.Prefixes.Add("http://*:8081/");listener.Prefixes.Add("http://*:8082/");监听器.Start();HttpListenerContextcontext=listener.GetContext();HttpListenerRequestrequest=context.Request;程序挂在GetContext();尽管在IE和Firefox中加载了http(不是https)页面。当我取消注释第一行时,出现错误:无法侦听前缀“http://*:80/”,因为它与计算机上的现有注册冲突。那么如何监听浏览器的请求呢?@LB我想写一个“代理”不要重新发明轮子,只需使用FiddlerCoreFiddler.FiddlerApplication.Startup(8764,true,true);}voidFiddlerApplication_BeforeRequest(Fiddler.SessionoSession){Console.WriteLine(String.Format("REQ:{0}",oSession.url));}publicvoidDispose(){Fiddler.FiddlerApplication.Shutdown();}}编辑你可以从这个矩形轮开始:)voidSniffPort80(){byte[]input=newbyte[]{1};Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Raw,ProtocolType.IP);socket.Bind(newIPEndPoint(IPAddress.Broadcast,80));socket.IOControl(IOControlCode.ReceiveAll,输入,null);字节[]缓冲区=新字节[0x10000];Task.Factory.StartNew(()=>{while(true){intlen=socket.Receive(buffer);if(len可能正在使用这个端口...在命令行运行netstat-ano你会查看正在使用的端口列表及其进程ID。我不知道,为什么GetContext();挂起,因为关于listerner变量发生了什么的信息太少,但是80端口的问题通常是由Skype引起的,因为它默认使用80端口。要解决此问题,请打开Skype的首选项,转到“高级”->“连接”并取消选中“使用端口80和443作为传入连接的替代方案”。我会考虑查看这个包http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OwinSelfHost/它使用HttpListener并且使用WebApiHttpMessageHandler创建代理非常容易。它挂起是因为GetContext()正在等待接收请求,如其文档中所述:此方法在等待传入请求时阻塞。如果您希望异步处理传入的请求(在不同的线程上)以便应用程序不会阻塞,请使用BeginGetContext方法。有关详细信息,请参阅:https://msdn.microsoft.com/en-us/library/system.net.httplistener.getcontext(v=vs.110).aspx使用异步模型往往很复杂,另一种选择是在不同的线程中运行所有代码,但这取决于您的目标。把前缀中的*换成+以上就是C#学习教程:监听浏览器的请求分享所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注---listener.Prefixes。添加("http://+:8080/");本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
