2 回答
TA贡献1831条经验 获得超9个赞
是的,正如您所说,客户端需要在服务器自动关闭之前调用服务。您可以使用以下语句来防止服务器自动关闭。
class Program
{
static void Main(string[] args)
{
Uri uri = new Uri("http://localhost:13020");
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.None;
using (ServiceHost sh=new ServiceHost(typeof(MyService),uri))
{
sh.AddServiceEndpoint(typeof(IService), binding, "");
ServiceMetadataBehavior smb;
smb = sh.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (smb==null)
{
smb = new ServiceMetadataBehavior()
{
HttpGetEnabled = true
};
sh.Description.Behaviors.Add(smb);
}
Binding mexbinding = MetadataExchangeBindings.CreateMexHttpBinding();
sh.AddServiceEndpoint(typeof(IMetadataExchange), mexbinding, "mex");
sh.Opened += delegate
{
Console.WriteLine("service is ready...");
};
sh.Closed += delegate
{
Console.WriteLine("Service is closed now...");
};
sh.Open();
Console.ReadLine();
sh.Close();
}
}
}
一个问题仍然存在:如何让服务器在没有管理员权限的情况下运行?
您可以为您的应用程序帐户提供所需的权限。为此,我们为帐户保留 URL 命名空间,允许相关应用程序注册该 URL。我们可以使用Netsh命令(这个工具需要管理员权限)。
Netsh http add urlacl url=http://+:8080/ user=domain\user
您应该用您的实际帐户代替domain\user,并使用实际端口而不是8080,例如管理员。
Netsh http add urlacl url=http://+:8123/ user=administrator
“ + ”是通配符,表示所有网卡请求都可以访问这个url。
这是有关此工具的官方文档。
https://docs.microsoft.com/en-us/windows/desktop/Http/netsh-commands-for-http
如果有什么我可以帮忙的,请随时告诉我。
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报