Я хотел бы встроить REST API в настольное приложение .NET 3.5.В этой версии фреймворка есть только один вариант: WCF с собственным размещением.
Но я не могу заставить его слушать только локальный хост.
При запуске приложение пытается создать URLрезервирование для http://+:8000
, которое не выполняется с System.ServiceModel.AddressAccessDeniedException
, потому что я не запускаю его с правами администратора.
Я хочу, чтобы оно зарезервировало только http://localhost:8000
и, таким образом, исключило необходимость в правах администратора.
Использование HostNameComparisonMode.Exact
, похоже, ничего не меняет.
Вот что я пробовал:
using Myservice;
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Web;
namespace consolehost1
{
class Program
{
static void Main(string[] args)
{
//Use exact hostname comparison mode
WebHttpBinding binding = new WebHttpBinding();
binding.HostNameComparisonMode = HostNameComparisonMode.Exact;
WebServiceHost host = new WebServiceHost(typeof(Service1), new Uri("http://localhost:8000/"));
ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IService1), binding, "some-endpoint");
//The host still tries to get a reservation for http://+:8000 and not just http://localhost:8000
host.Open();
}
}
}
Что я могу сделать?