我有一个工作服务,它以下列方式公开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方法名称:创建
答案 0 :(得分:1)
除非您以管理员身份运行自托管进程(我猜不是这种情况,并且您有充分的理由),否则您将无法开始侦听HTTP请求机器。您需要使用管理员命令提示符来授予对您的用户帐户的访问权限,方法是按照错误消息中链接的页面中的说明进行操作(链接已断开,但刚刚修复)。
如果您运行的是Windows 7/8/10 / Vista / Server 2008,则可以使用以下命令(从管理员命令提示符下):
netsh http add urlacl url=http://+:5280/MetaDataService/ user=DOMAIN\user
其中DOMAIN\user
是您正在运行该流程的用户帐户。您可以在命令提示符中使用命令whoami
找到它。
一旦你这样做(每台机器只有一次),那么你应该可以用非管理员帐户运行它。