.Net网页转发工具

用法
http://localhost:端口号/转发网址

        private static string port = "";
        private static HttpListener httpListener;
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                port = args[1];
            }
            else
            {
                Console.WriteLine("请输入访问端口:");
                port = Console.ReadLine();
            }
            Console.WriteLine($"返回端口:{port}");
            Start();
            Console.ReadLine();
        }


        private static void Start()
        {
            try
            {
                Program.httpListener = new HttpListener();
                Program.httpListener.Prefixes.Add("http://+:" + Program.port + "/");
                Program.httpListener.Start();
                Program.httpListener.BeginGetContext(new AsyncCallback(Program.Result), (object)null);
                Console.WriteLine("启动成功");
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("启动失败:" + ex.ToString());
            }
        }

        private static void Result(IAsyncResult ar)
        {
            Program.httpListener.BeginGetContext(new AsyncCallback(Program.Result), (object)null);
            HttpListenerContext context = Program.httpListener.EndGetContext(ar);
            HttpListenerRequest request = context.Request;
            HttpListenerResponse response = context.Response;
            context.Response.ContentType = "text/plain;charset=UTF-8";
            context.Response.AddHeader("Content-type", "text/plain");
            context.Response.ContentEncoding = Encoding.UTF8;
            byte[] bytes = Encoding.UTF8.GetBytes(Program.HandleRequest(request, response));
            try
            {
                using (Stream outputStream = response.OutputStream)
                    outputStream.Write(bytes, 0, bytes.Length);
            }
            catch (Exception ex)
            {
                Console.WriteLine("网络蹦了:" + ex.ToString());
            }
        }

        private static string HandleRequest(HttpListenerRequest request, HttpListenerResponse response)
        {
            try
            {
                string str = "http:/" + request.RawUrl;
                Console.WriteLine("用户发起【" + request.HttpMethod + "】" + request.Url.ToString() + "代理地址至" + str);
                if (request.HttpMethod == "POST")
                {
                    List<byte> byteList = new List<byte>();
                    byte[] buffer = new byte[2048];
                    int count = 0;
                    int num;
                    do
                    {
                        num = request.InputStream.Read(buffer, 0, buffer.Length);
                        count += num;
                        byteList.AddRange((IEnumerable<byte>)buffer);
                    }
                    while (num != 0);
                    string query = Encoding.UTF8.GetString(byteList.ToArray(), 0, count);
                    Console.WriteLine("提交数据:" + query);
                    using (HttpClient httpClient = new HttpClient())
                    {
                        httpClient.BaseAddress = new Uri(str);
                        Dictionary<string, string> dictionary = new Dictionary<string, string>();
                        NameValueCollection queryString = HttpUtility.ParseQueryString(query);
                        foreach (string allKey in queryString.AllKeys)
                            dictionary.Add(allKey, queryString[allKey]);
                        HttpContent content = (HttpContent)new FormUrlEncodedContent((IEnumerable<KeyValuePair<string, string>>)dictionary);
                        string result = httpClient.PostAsync(str, content).Result.Content.ReadAsStringAsync().Result;
                        Console.WriteLine("Body:" + result);
                        return result;
                    }
                }
                else
                {
                    using (HttpClient httpClient = new HttpClient())
                    {
                        httpClient.BaseAddress = new Uri(str);
                        string result = httpClient.GetAsync(str).Result.Content.ReadAsStringAsync().Result;
                        Console.WriteLine("Body:" + result);
                        return result;
                    }
                }
            }
            catch (Exception ex)
            {
                response.StatusDescription = "404";
                response.StatusCode = 404;
                return "在接收数据时发生错误:" + ex.ToString();
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: .NET 3.5修复工具是一个用于修复.NET Framework 3.5安装问题的工具。如果用户在安装.NET Framework 3.5时遇到了错误,例如“要安装的组件在计算机上已经存在”或“安装失败”,则可以使用此工具来解决问题。 .NET 3.5修复工具能够自动选择所需的修复项,并进行必要的修复操作,以确保.NET Framework 3.5安装成功。该工具还提供了一些高级选项,例如安装IIS的相关组件或从Windows更新中恢复缺失的文件等。 需要注意的是,该工具不仅适用于.NET Framework 3.5,在某些情况下,它也可用于修复.NET Framework 4.x或更高版本的安装问题。如果用户在安装这些版本时遇到问题,建议首先尝试使用.NET 3.5修复工具进行修复。 总的来说,.NET 3.5修复工具是一个非常实用的工具,它可以解决.NET Framework安装问题,从而确保计算机能够正常运行应用程序。 ### 回答2: .NET 3.5修复工具是一种用于修复.NET Framework 3.5安装问题的工具。在安装.NET Framework 3.5时,可能会出现一些问题,如安装失败、安装慢或安装出错等。这些问题可能是由于计算机缺少先决条件或其他问题导致的。 .NET 3.5修复工具可以为.NET Framework 3.5安装提供帮助,并修复一些已知的安装问题。它检测和修复问题,如缺少先决条件、不完全的安装和注册表损坏等问题。它还可以修复与.NET Framework 3.5相关的安全设置和策略问题。 使用.NET 3.5修复工具非常简单。首先,您需要下载并运行它。然后,按照屏幕上的提示进行操作,选择要修复的问题,并让工具运行修复程序。在修复完成后,您需要重新启动计算机,以确保.NET Framework 3.5正常运行。 总之,.NET 3.5修复工具是一个非常实用的工具,用于帮助修复.NET Framework 3.5安装过程中的问题。它是一种简单、易于使用的工具,可以帮助您解决许多与安装相关的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值