普通用户如何启动WCF服务

做Winform项目时,部署到客户机上有两个应用程序,Host和Client,在Host上运行着WCF服务供Client调用。平时现在在测试的时候都没发现有问题,但是当安装到客户的正式环境时发现服务启动失败。如下图

可以很明显的知道是由于没有管理员权限造成的。那么是否WCF服务一定要在管理员权限下才能打开呢?查阅了相关资料,发现如下解决方法。

public static class NetAclChecker
{
public static void AddUrlAclToEveryOne(int port) { string args = string.Format(@"http add urlacl url=http://+:{0}/ user=everyone", port);
//注意,如果是西班牙环境需要切换成user=todos
            var psi = new ProcessStartInfo("netsh", args); 
psi.Verb
= "runas";
psi.CreateNoWindow
= true;
psi.WindowStyle
= ProcessWindowStyle.Hidden;
psi.UseShellExecute
= true;
Process.Start(psi).WaitForExit();
}
}
 class Program
    {
        static void Main(string[] args)
        {
            int port = 9090;

            NetAclChecker.AddUrlAclToEveryOne(port);
        }
    }

在管理员权限下运行上述程序,就已经把9090端口成功添加到监听列表中,然后在普通用户权限就可以胜利开启WCF服务。

原文地址:https://www.cnblogs.com/JustYong/p/5489901.html