2017-07-31 87 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

相關問題