【问题标题】:Visual Studio unable to open port to host WCF ServiceVisual Studio 无法打开端口来托管 WCF 服务
【发布时间】:2011-10-17 10:27:33
【问题描述】:

我使用 WCF 服务创建了一个解决方案 VS2010 C#,该库用于获取数据,该服务在解决方案中的控制台应用程序中运行良好。没问题。

对于旧项目,我必须在 VS2008 项目(可能稍后在 VS2005)上使用它。然后我启动 VS2010 我得到“WCF 测试客户端”。这时候在VS2008中,尝试在本地机器上“添加web引用”...没有结果。

然后我尝试使用 Vs2010 创建一个控制台应用程序来托管它,我这样做了:

Uri baseAddress = new Uri("http://localhost:8080/hello");
using (ServiceHost host = new ServiceHost(typeof(SecurityAccessWCF.WCFSecurityService), baseAddress))
{
    // Enable metadata publishing.
    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
    smb.HttpGetEnabled = true;
    smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
    host.Description.Behaviors.Add(smb);

    host.Open();

    Console.WriteLine("The service is ready at {0}", baseAddress);
    Console.WriteLine("Press <Enter> to stop the service.");
    Console.ReadLine();

    // Close the ServiceHost.
    host.Close();
}

我在Open() 上收到错误,我收到此错误“AddressAccessDeniedException - HTTP 无法注册 URL...您的进程没有访问权限”(提供的链接不清楚,我在 Win7 x64作为本地管理员并在域中)

【问题讨论】:

    标签: visual-studio wcf windows-7 wcf-client wcf-hosting


    【解决方案1】:

    Shift + 鼠标右键单击 Visual Studio 快捷方式并选择以管理员身份运行

    这样你应该可以托管它。

    或者,您可以构建项目并在管理员帐户下以相同的方式运行生成的控制台应用程序。

    【讨论】:

    • 或者,如果您转到 VisualStudio 快捷方式的属性,在兼容性下,您可以将其标记为始终以管理员身份运行。我最终这样做了,因为它比注册您可能想要与 WCF 一起使用的每个 URL 容易得多。
    【解决方案2】:

    这是一个标准错误,意味着您的应用程序无法注册域。通常这是 vista/windows 7 的安全问题。以管理员身份登录并运行netsh http add urlacl url=http://+:80/Localhost user=DOMAIN\user

    Here 是一篇 msdn 文章,提供更多信息

    【讨论】:

    • 我读到了,我说我是管理员,我不在域中,那么 user=DOMAIN\USer 呢?
    • 您将在一个域中。进入电脑,它会告诉你是哪一个。用户将是您登录的任何用户名。您应该能够以任何管理员身份运行它,尽管我没有亲自尝试过它作为 pc 管理员以外的任何人
    猜你喜欢
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2013-05-31
    • 2015-05-30
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    相关资源
    最近更新 更多