将webHttpBinding端点添加到现有的netTcpBinding

时间:2016-02-04 16:12:10

标签: wcf nettcpbinding webhttpbinding

我有一个工作服务,它以下列方式公开netTcpBinding:

<service name="MetaData.Service.MetaDataServices" behaviorConfiguration="MetaDataServiceBehavior">
        <endpoint address="net.tcp://localhost:5200/MetaDataService" binding="netTcpBinding" bindingConfiguration="MetaDataBinding" contract="MetaData.ServiceContract.IMetaDataService"/>
      </service>

如何添加http端点?我尝试了以下方法:

<service name="MetaData.Service.MetaDataServices" behaviorConfiguration="MetaDataServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:5280/MetaDataService"/>
          </baseAddresses>
        </host>
        <endpoint address="net.tcp://localhost:5200/MetaDataService" binding="netTcpBinding" bindingConfiguration="MetaDataBinding" contract="MetaData.ServiceContract.IMetaDataService"/>
        <endpoint address="" binding="webHttpBinding"  contract="MetaData.ServiceContract.IMetaDataService"/>
      </service>

    </services>

但有例外:

  

HTTP无法注册网址http://+:5280/MetaDataService/。您的   进程对此命名空间没有访问权限(请参阅   http://go.microsoft.com/fwlink/?LinkId=70353了解详情)。班级名称:   RemoteProxy方法名称:创建

1 个答案:

答案 0 :(得分:1)

除非您以管理员身份运行自托管进程(我猜不是这种情况,并且您有充分的理由),否则您将无法开始侦听HTTP请求机器。您需要使用管理员命令提示符来授予对您的用户帐户的访问权限,方法是按照错误消息中链接的页面中的说明进行操作(链接已断开,但刚刚修复)。

如果您运行的是Windows 7/8/10 / Vista / Server 2008,则可以使用以下命令(从管理员命令提示符下):

netsh http add urlacl url=http://+:5280/MetaDataService/ user=DOMAIN\user

其中DOMAIN\user是您正在运行该流程的用户帐户。您可以在命令提示符中使用命令whoami找到它。

一旦你这样做(每台机器只有一次),那么你应该可以用非管理员帐户运行它。