2017-07-31 3 views
1

J'essaye d'héberger un serveur web avec WPF sur le réseau wifi local et d'exposer un service web qu'un autre appareil (dans mon cas, un Android) peut appeler en étant connecté au même réseau wifi . J'ai créé une règle entrante sur le pare-feu pour le port que j'utilise. L'appel de service Web ne fonctionne que lorsque l'application Windows est lancée à l'aide de «Exécuter en tant qu'administrateur». Est-il possible de faire la même chose sans privilèges d'administrateur? Voici mon code -La règle Inbound dans firewall ne fonctionne qu'avec les privilèges 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(); 
    } 
} 

J'ai créé une règle entrant dans le pare-feu avec ces propriétés
de type protocole - TCP
Port local - Ports spécifiques - 55000
Profils - Public
action - " Autoriser la connexion "
Programmes -" Tous les programmes répondant aux conditions spécifiées "

Je ne sais pas exactement pourquoi le pare-feu ignore cette exception si l'application n'est pas en cours d'exécution dans Admin. L'objet WebServiceHost fonctionne correctement même s'il n'est pas en mode Admin, sans erreurs. Mais l'appel webservice n'atteint jamais le serveur et la requête expire.

Répondre

2

rien à voir avec le pare-feu, vous ne pouvez pas ouvrir un lien http dans une application WPF - pour des raisons de sécurité

see that