2013-03-20 3 views
2

У меня есть приложение службы WCF, созданное в VS 2010. Когда я исполню его, я получил страницу службы в следующей локальной URLWCF Service - Self Хостинг не работает

enter image description here

Я создал другой как показано ниже. Он выбрасывает следующее исключение

HTTP не удалось зарегистрировать URL. Ваш процесс не имеет прав доступа к этому пространству имен (подробности см. В http://go.microsoft.com/fwlink/?LinkId=70353).

Ну, у меня нет особого интереса к номеру порта 49609. Я просто скопировал его с другой рабочей службы.

Теперь у меня есть минимальные права на запуск службы WCF. Какое изменение мне нужно сделать, чтобы сделать следующий код успешным?

Примечание: у меня нет возможности получить права администратора на этом компьютере.

Замечание: Я в порядке с любым номером порта, который будет работать.

namespace ConsoleApplication1 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     string baseAddress = "http://" + Environment.MachineName + ":49609/Service"; 
     ServiceHost host1 = new ServiceHost(typeof(Service1), new Uri(baseAddress)); 
     host1.AddServiceEndpoint(typeof(ConsoleApplication1.IService1), new BasicHttpBinding(), baseAddress); 
     host1.Open(); 

    } 
    static Binding GetBinding() 
    { 
     BasicHttpBinding result = new BasicHttpBinding(); 
     return result; 
    } 

} 

} 

Сервис

public class Service1 : IService1 
{ 
    public int Add(int n1, int n2) 
    { 
     return n1 + n2; 
    } 
} 

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    int Add(int n1, int n2); 
} 

ответ

6

Для консольных приложений, чтобы открыть входящие (прослушивание) TCP порты с помощью HTTP.sys (который что использует сценарий самообслуживания WCF), им нужно либо иметь административные привилегии, либо для некоторой учетной записи wi й административной привилегии для резервирования «пространства имен» (т. е. пары порт/путь) для определенных учетных записей (или всех учетных записей) для использования. Вы упоминаете, что вы не можете получить привилегии администратора, поэтому вам нужно получить доступ к администратору на компьютере, чтобы предоставить вам доступ к некоторому пространству имен, которое вы будете использовать.

Например, на одной из моих машин я никогда не запускаю VS в качестве администратора (или стараюсь изо всех сил, как это требуют некоторые операции), но для запуска служб WCF я выбрал один путь (в моем случае, http://<my-machine-name>:8000/Service), и я повторно использую этот путь в качестве базового адреса моих служб. Так что мне пришлось бежать, как администратор, командную строку ниже:

netsh http add urlacl url=http://+:8000/Service user=MYDOMAIN\myusername 

В вашем случае, вам необходимо получить у администратора в поле, чтобы запустить аналогичную команду для вас.

Смежные вопросы