Размещать приложение WCF без привилегий UAC / admin - PullRequest
9 голосов
/ 25 апреля 2011

Я написал приложение, в котором размещается служба WCF. И я пытаюсь запустить приложение с этим конфигом.

<?xml version="1.0"?>
<configuration>
    <system.serviceModel>
        <services>
            <service name="MyApp.Service" behaviorConfiguration="ServiceBehavior">
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost:8000/service"/>
                    </baseAddresses>
                </host>
                <endpoint address="" binding="wsHttpBinding" contract="MyApp.IService"/>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="ServiceBehavior">
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="False"/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

Но это вызывает необходимость запуска приложения от имени администратора.
Возможно ли запустить это приложение без прав администратора? (Если возможно, измените только конфигурацию.) Кроме того, мне также нужно добавить ссылки на службы в Visual Studio для написания клиентской программы. Если возможно, пожалуйста, держите приложение, можно добавить сервисные ссылки в Visual Studio 2010.

Ответы [ 3 ]

7 голосов
/ 25 апреля 2011

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

netsh http add urlacl (see help for the rest of the params)

Это позволит пользователю, которого вы укажете, вырезать часть URL-пространства для машины. Если вы не хотите этого делать, вам нужно перейти на другую привязку (например, netTcp), которая не требует специальных привилегий для прослушивания.

5 голосов
/ 01 мая 2011

Исходя из комментария к моему другому ответу, вы не сможете сделать это с помощью встроенных привязок HTTP - все они основаны на HTTP.sys, который требует предоставления прав пользователям, не являющимся администраторами.зарегистрировать URL.Если ваш сценарий развертывания позволяет, рассмотрите возможность перехода на netTcpBinding вместо этого - никаких проблем с разрешениями там нет.В противном случае вы пользуетесь SOL со встроенными привязками - вам нужно создать сырой HTTP-транспорт, не основанный на HTTP.sys.

4 голосов
/ 02 сентября 2016

Это решение сработало для меня (с помощью HTTP-привязки), откройте свой сервис по этому адресу:

http://localhost:80/Temporary_Listen_Addresses/

Должен признать, что я нашел его на этом сайте http://www.paraesthesia.com/archive/2010/06/11/developing-as-a-non-admin-testing-wcf-services.aspx/ после того, как Google в течение некоторого времени ... Так что кредиты этому парню.

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