2017-07-31 96 views
1

我想在本地wifi网络上使用WPF托管一个web服务器,并暴露一个web服务,在连接到同一个wifi网络时,另一个设备(在我的情况下是Android)可以调用。我在防火墙上为我使用的端口创建了一个入站规则。使用“以管理员身份运行”启动Windows应用程序时,只能通过webservice调用 如果没有管理员权限,我可以这样做吗? 这里是我的代码 -防火墙中的入站规则只适用于管理员权限

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对象即使不处于管理员模式也可以正常运行,没有错误。 但web服务调用永远不会到达服务器,并且请求超时。

回答

2

无关防火墙,你可以在不打开一个WPF应用程序的HTTP链接 - 出于安全原因

see that