我正在尝试在本地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调用永远不会到达服务器并且请求超时。