将 webHttpBinding 端点添加到现有的 netTcpBinding
Adding webHttpBinding endpoint to an existing netTcpBinding
我有一个可用的服务,它通过以下方式公开 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 could not register URL http://+:5280/MetaDataService/. Your
process does not have access rights to this namespace (see
http://go.microsoft.com/fwlink/?LinkId=70353 for details). class name:
RemoteProxy method name: Create
除非您运行以管理员身份使用自托管进程(我猜不是这种情况,而且您有充分的理由这样做),否则您将无法开始监听机器中的 HTTP 请求。您需要使用管理员命令提示符来授予对您的用户帐户的访问权限,方法是按照错误消息中 link 页面中的说明进行操作(link 已损坏,但它刚刚修复)。
如果您 运行ning Windows 7/8/10/Vista/Server 2008,您可以使用以下命令(从管理员命令提示符):
netsh http add urlacl url=http://+:5280/MetaDataService/ user=DOMAIN\user
其中 DOMAIN\user
是您在 运行 中使用的用户帐户。您可以在命令提示符中使用命令 whoami
找到它。
一旦你这样做了(每台机器只有一次),那么你应该可以 运行 使用非管理员帐户。
我有一个可用的服务,它通过以下方式公开 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 could not register URL http://+:5280/MetaDataService/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details). class name: RemoteProxy method name: Create
除非您运行以管理员身份使用自托管进程(我猜不是这种情况,而且您有充分的理由这样做),否则您将无法开始监听机器中的 HTTP 请求。您需要使用管理员命令提示符来授予对您的用户帐户的访问权限,方法是按照错误消息中 link 页面中的说明进行操作(link 已损坏,但它刚刚修复)。
如果您 运行ning Windows 7/8/10/Vista/Server 2008,您可以使用以下命令(从管理员命令提示符):
netsh http add urlacl url=http://+:5280/MetaDataService/ user=DOMAIN\user
其中 DOMAIN\user
是您在 运行 中使用的用户帐户。您可以在命令提示符中使用命令 whoami
找到它。
一旦你这样做了(每台机器只有一次),那么你应该可以 运行 使用非管理员帐户。