Отладка служб WCF NetTCP с помощью UAC - PullRequest
0 голосов
/ 08 октября 2010

У меня настроен набор служб NetTCP, которые работают под управлением службы Windows для производства, но я использую консольное приложение для их раскрутки в целях отладки. В Windows Vista я отключил UAC сразу, потому что это раздражало, однако я стараюсь оставить его включенным с 7, потому что он делает все, что я хочу, при этом очень тихо и не болтается.

Проблема, с которой я столкнулся, заключается в том, что при запуске VS в «стандартном» режиме (т. Е. Без запуска от имени администратора) службы не запускаются, потому что это говорит следующее:

"Конечной точке службы не удалось прослушать URI« net.tcp: // localhost: 60000 / [ServiceName] », так как доступ был запрещен. Убедитесь, что текущему пользователю предоставлен доступ в соответствующем разделе allowAccounts SMSvcHost.exe. .config. "

После небольшого исследования я смог найти этот файл и изменить его с помощью SID для моей учетной записи. Конфиг выглядит так:

<?xml version="1.0" encoding="utf-8"?><configuration>
<runtime>
    <gcConcurrent enabled="false" />
    <generatePublisherEvidence enabled="false" />
</runtime>

<system.serviceModel.activation>
    <net.tcp listenBacklog="10" maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10" teredoEnabled="false">
        <allowAccounts>
            <add securityIdentifier="S-1-5-21-XXXXXXX"/>
        </allowAccounts>
    </net.tcp>
    <net.pipe maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10">
        <allowAccounts>
            <add securityIdentifier="S-1-5-21-XXXXXXX"/>
        </allowAccounts>
    </net.pipe>
    <diagnostics performanceCountersEnabled="true" />
</system.serviceModel.activation></configuration>

SID был получен из инструмента, входящего в комплект Sysinternals, и был проверен на соответствие ADSI Edit, поэтому я знаю, что он правильный. После перезагрузки службы по-прежнему не запускаются, и я стараюсь не заставлять их запускаться в административном режиме, потому что тогда вы больше не можете дважды щелкнуть файлы решения или проекта, что довольно раздражает.

У кого-нибудь есть идеи? Файл SMSvcHost.exe.config находится в папке «C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation», и хотя я использую x64, приложение скомпилировано в режиме x86. Я не уверен, в этом ли моя проблема?

1 Ответ

2 голосов
/ 05 декабря 2010

Чтобы найти «правильное» расположение файла конфигурации, сделайте следующее: Найдите NetTcpPortSharing на вкладке serivce в диспетчере задач. Нажмите Go для обработки в контекстном меню. Нажмите Открыть местоположение файла.

пс. на моем Windows 2008 R2 x64 с расположением .NET 4 находится C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

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