HTTP 无法注册 URL http://+:8000/HelloWCF/。您的进程没有此名称空间的访问权限

我是一个初学者在WCF,但试图提高我的经验。在第一步,我遇到了问题。我创建了最简单的WCF服务。代码清单:(一个文件中的所有代码)

using System;
using System.ServiceModel;


namespace EssentialWCF
{
[ServiceContract]
public interface IStockService
{
[OperationContract]
double GetPrice(string ticker);
}


public class StockService : IStockService
{
public double GetPrice(string ticker)
{
return 94.85;
}
}


class Service
{
static void Main(string[] args)
{
ServiceHost serviceHost = new ServiceHost(typeof(StockService),
new Uri("http://localhost:8000/HelloWCF"));


serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
serviceHost.Open();


Console.WriteLine("To continue press ENTER");


serviceHost.Close();
}
}
}

那就是通过控制台给我一个号码的服务。但是调试给我异常:(而不是数字:))

HTTP无法注册URL http://+:8000/HelloWCF/。您的进程没有此名称空间的访问权限。

你曾经遇到过同样的情况吗?我很乐意听取每一条建议。

186315 次浏览

您的示例代码将不能像所示那样工作,因为您忘记在serviceHost.Close()行之前包含Console.ReadLine()。这意味着打开主机,然后立即关闭。

除此之外,似乎您的机器有一个权限问题。确保您以管理员帐户登录计算机。如果您是管理员,那么可能没有运行万维网发布服务(W3SVC)来处理HTTP请求。

我关闭了Visual studio IDE,并通过右键单击Visual studio图标重新打开它,然后说“以管理员身份运行”,然后当我运行主机时,它工作了!!

在Windows Vista和以后的HTTP WCF服务的东西会导致你提到的异常,因为一个受限制的帐户没有这个权利。这就是为什么当您以管理员身份运行它时它可以工作的原因。

每个明智的开发人员都必须使用RESTRICTED帐户而不是Administrator帐户,然而许多人走错了路,这正是为什么有那么多应用程序在实际上不需要管理员权限的情况下要求管理员权限的原因。懒惰的工作方式会导致懒惰的解决方案。我希望你仍然在一个受限账户工作(恭喜你)。

如果我没记错的话,有一个名为NamespaceManagerTool的工具(大约从2008年开始),它应该对您为WCF定义的这些服务url授予受限制的用户权限。不过我还没用过……

如果你的机器在局域网中,你需要一些管理员权限给你的帐户,然后你应用一些管理员权限给你的用户,否则你应该以管理员身份启动ide…

不幸的是,异常文本http://go.microsoft.com/fwlink/?LinkId=70353中的链接被破坏了。然而,它曾经导致http://msdn.microsoft.com/en-us/library/ms733768.aspx解释如何设置权限。

它主要告诉你使用以下命令:

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

你可以使用netsh的帮助来获得更多细节上的帮助

例如:netsh http add ?

提供有关http add命令的帮助。

你需要做的简单的事情就是关闭你的Visual Studio环境,然后使用“以管理员身份运行”再次打开它。现在应该可以成功运行了。

关闭iis express和所有浏览器(如果url在任何浏览器中打开)。同时在管理模式下打开visual studio IDE。这解决了我的问题。

右键单击Visual Studio >以管理员身份运行>打开项目并运行服务。 这是一个与特权相关的问题。< / p >

虽然我能够在一台计算机上解决这个问题,遵循其他用户的解决方案,命令netsh并没有在我的一台机器上解决这个问题,即使当前用户有管理员权限,我仍然得到“HTTP无法注册URL....您的进程没有此名称空间的访问权限”。,所以我分享我的解决方案,以防你仍然没有得到它与其他解决方案一起工作。

在还尝试在我的网站的物理目录中给用户写权限后,没有成功,我最终决定尝试更改IIS设置

如下图所示,我将我的网站的物理路径证书配置为一个特定的用户连接,这是一个具有DOMAIN\用户名和密码的管理帐户,这足以使错误消失。

enter image description here

enter image description here

enter image description here

你必须给你的应用程序监听http请求的权限。你可以在cmd中使用这个命令(打开cmd以管理员模式运行)

netsh http add urlacl url=http://+:8000/ user=Everyone

如果你的应用程序正在使用其他端口,例如9095,这个命令必须如下所示:

netsh http add urlacl url=http://+:9095/ user=Everyone
并重新运行你的应用程序,它应该工作。

我在一个使用不同端口(2130)的域中得到相同的错误。流程是一种服务。我能够通过将运行服务的用户从NetworkSystem更改为本地系统帐户来修复这个问题。