Я новичок в WCF, но пытаюсь улучшить свой опыт. И на первом этапе я столкнулся с проблемой. Я создал простейшую службу WCF. Листинг кода: (весь код в одном файле)
using System;
using System.ServiceModel;
namespace EssentialWCF
{
[ServiceContract]
public interface IStockService
{
[OperationContract]
double GetPrice(string ticker);
}
public class StockService : IStockService
{
public double GetPrice(string ticker)
{
return 94.85;
}
}
class Service
{
static void Main(string[] args)
{
ServiceHost serviceHost = new ServiceHost(typeof(StockService),
new Uri("http://localhost:8000/HelloWCF"));
serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
serviceHost.Open();
Console.WriteLine("To continue press ENTER");
serviceHost.Close();
}
}
}
Это будет сервис, который дает мне номер через консоль. Но отладка дала мне исключение: (вместо числа :))
HTTP не удалось зарегистрировать URL http: // +: 8000 / HelloWCF / . У вашего процесса нет прав доступа к этому пространству имен ( подробности см. На http://go.microsoft.com/fwlink/?LinkId=70353 ).
Вы когда-нибудь сталкивались с подобной ситуацией? Буду рад каждому совету.
Ответы:
К сожалению, ссылка в тексте исключения http://go.microsoft.com/fwlink/?LinkId=70353 не работает. Однако раньше это приводило к http://msdn.microsoft.com/en-us/library/ms733768.aspx, где объясняется, как установить разрешения.
Он в основном сообщает вам использовать следующую команду:
netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user
Вы можете получить дополнительную помощь по деталям с помощью
netsh
Например:
netsh http add ?
Оказывает помощь по
http add
команде.источник
COMPUTER_NAME\USER_NAME
в приведенной выше команде.netsh http add urlacl url=http://+:80/ user=DOMAIN\user
если хотите предоставить учетной записи права доступа к любым пространствам имен на порту.Я закрыл среду разработки Visual Studio и снова открыл ее, щелкнув правой кнопкой мыши значок Visual Studio и сказав «Запуск от имени администратора». Затем, когда я запустил хост, все заработало !!!
источник
Щелкните правой кнопкой мыши Visual Studio> Запуск от имени администратора> Откройте свой проект и запустите службу. Это проблема, связанная с привилегиями.
источник
Вам нужны права администратора для вашей учетной записи, если ваш компьютер находится в локальной сети, тогда вы применяете некоторые права администратора к своему пользователю, иначе вы должны запустить ide как администратор ...
источник
Вам нужно просто закрыть среду Visual Studio и снова открыть ее с помощью «Запуск от имени администратора». Теперь он должен работать успешно.
источник
В Windows Vista и более поздних версиях служба HTTP WCF вызовет упомянутое вами исключение, поскольку ограниченная учетная запись не имеет на это права. Вот почему он работал, когда вы запускали его от имени администратора.
Каждый разумный разработчик должен использовать ОГРАНИЧЕННУЮ учетную запись, а не в качестве администратора, однако многие люди идут неправильным путем, и именно поэтому существует так много приложений, которые ТРЕБУЮТ разрешения администратора, когда они на самом деле не требуются. Ленивая работа приводит к ленивым решениям. Надеюсь, вы по-прежнему работаете в ограниченном аккаунте (мои поздравления).
Существует инструмент (с 2008 года или около того) под названием NamespaceManagerTool, если я правильно помню, который должен предоставлять ограниченные разрешения пользователя на эти URL-адреса служб, которые вы определяете для WCF. Но я этим не пользовался ...
источник
Ваш пример кода не будет работать, как показано, потому что вы забыли поставить
Console.ReadLine()
передserviceHost.Close()
строкой. Это означает, что хост открывается, а затем сразу закрывается.Кроме того, похоже, у вас есть проблема с разрешением на вашем компьютере. Убедитесь, что вы вошли в систему с учетной записью администратора на своем компьютере. Если вы являетесь администратором, возможно, у вас не запущена служба публикации в Интернете (W3SVC) для обработки HTTP-запросов.
источник
Хотя я смог решить эту проблему на одном компьютере, следуя решениям других пользователей, эта команда
netsh
не решила проблему на одной из моих машин, и хотя у текущего пользователя были права администратора, я все еще получал сообщение «HTTP не удалось зарегистрировать URL. .... Ваш процесс не имеет прав доступа к этому пространству имен ". Итак, я делюсь своим решением на случай, если вы все еще не заставите его работать с другими решениями.После того, как я попытался предоставить пользователю права на запись в физическом каталоге моего веб-сайта и не добился успеха, я наконец решил попробовать изменить настройки IIS .
Как показано на изображениях ниже, я настроил учетные данные физического пути своего веб-сайта для подключения в качестве конкретного пользователя, который был учетной записью администратора с DOMAIN \ username и паролем, и этого было достаточно, чтобы ошибка исчезла.
источник
Закройте iis express и все браузеры (если URL-адрес был открыт в любом из браузеров). Также откройте IDE Visual Studio в режиме администратора. Это решило мою проблему.
источник