Как я могу сделать так, чтобы моя собственная служба WCF НЕ пыталась зарезервировать URL-адреса, отличные от localhost? - PullRequest
0 голосов
/ 08 апреля 2019

Я хотел бы встроить 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();
        }
    }
}

Что я могу сделать?

1 Ответ

0 голосов
/ 08 апреля 2019

Может ли следующая команда решить проблему?

  • Для Windows Vista, Windows7

netsh http add urlacl url = http://+:8000/MyUri user= ДОМЕН \ пользователь

  • Для Windows XP, Server2003.

httpcfg set urlacl / u {http://URL:Port/ |https://URL:Port/} / ACL

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/configuring-http-and-https
https://docs.microsoft.com/en-us/windows/desktop/http/add-urlacl
Не стесняйтесь сообщить мне, если проблема все еще существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...