防火墙中的入站规则仅适用于管理员权限

时间:2017-07-31 07:50:19

标签: c# wpf self-hosting windows-firewall

我正在尝试在本地wifi网络上托管一个带有WPF的网络服务器,并公开另一台设备(在我的情况下,Android)可以在连接到同一个wifi网络时调用的web服务。我在防火墙上为我正在使用的端口创建了一个入站规则。只有在使用"以管理员身份运行"启动Windows应用程序时,才会进行Web服务调用。 有没有一种方法可以在没有Admin权限的情况下做同样的事情? 这是我的代码 -

public class SelfHost
{
    WebServiceHost Host;
    public void HostServer()
    {
        var hostIPadd = Util.GetLocalHostIP(); //This returns something like "http://192.168.1.2" 
        Values.SERVER_PORT_VALUE = "55000";

        var uri = new Uri(hostIPadd + ":" + Values.SERVER_PORT_VALUE);

        Host = new WebServiceHost(new Service{...}, uri);

        //Start host
        ServiceEndpoint ep = Host.AddServiceEndpoint(typeof(IService), new WebHttpBinding(), "");
        Host.Open();
    }
}


public partial class MyWindow : Window
{

    public MyWindow()
    {
        InitializeComponent();
        StartHost();
    }

     private void StartHost()
    {
        var host = new SelfHost();

        var thServer = new System.Threading.Thread(host.HostServer);
        thServer.IsBackground = true;
        thServer.Start();
    }
}

我已在防火墙中使用这些属性创建了入站规则
协议类型 - TCP
本地端口 - 特定端口 - 55000
简介 - 公众
动作 - "允许连接"
程序 - "所有符合指定条件的程序"

如果应用未在管理员中运行,我不太清楚为什么防火墙会忽略此异常。即使WebServiceHost对象不在管理模式下也没有错误,它运行正常。 但是webservice调用永远不会到达服务器并且请求超时。

1 个答案:

答案 0 :(得分:2)

与防火墙无关,您无法在wpf应用中打开http链接 - 出于安全原因

see that