51qsx 发表于 2015-5-16 05:58:23

WIN7中 HttpListener 拒绝访问 异常解决 C#

  在项目中使用HttpListener为本地的Flex提供了一个图片传输的功能
  注册地址:http://+:9527/icon
  运行生产的程序出现:
  -----------------------------------
  UnHandledException Message:拒绝访问
  在System.Net.HttpListener.AddAll()
  在System.Net.HttpListener.Start()
  .....
  ------------------------------------
  为程序添加了管理员权限运行的manifest配置文件,依然不能解决,手动设置程序以管理员权限运行可以通过
  解决改问题的方法:
  以管理员权限运行cmd
  输入: netsh http add urlacl url=http://+:9527/icon user=DOMAIN\user
  注:DOMAIN 即计算机名
  例如我的user=cmdszh_comperny\cmdszh
  
  把以上操作写为C#代码如下(主程序一定在manifest中配置UAC权限)
  public static void AddAddress(string address)
      {
            try
            {
                AddAddress(address, Environment.UserDomainName, Environment.UserName);
            }catch(Exception ex){}
      }
  public static void AddAddress(string address, string domain, string user)
      {
            string argsDll = String.Format(@"http delete urlacl url={0}", address);
            string args = string.Format(@"http add urlacl url={0} user={1}\{2}", address, domain, user);
            ProcessStartInfo psi = new ProcessStartInfo("netsh", argsDll);
            psi.Verb = "runas";
            psi.CreateNoWindow = true;
            psi.WindowStyle = ProcessWindowStyle.Hidden;
            psi.UseShellExecute = false;
            Process.Start(psi).WaitForExit();//删除urlacl
            psi = new ProcessStartInfo("netsh", args);
            psi.Verb = "runas";
            psi.CreateNoWindow = true;
            psi.WindowStyle = ProcessWindowStyle.Hidden;
            psi.UseShellExecute = false;
            Process.Start(psi).WaitForExit();//添加urlacl
      }
页: [1]
查看完整版本: WIN7中 HttpListener 拒绝访问 异常解决 C#