WCF服务 - 自托管服务不起作用

时间:2013-03-20 18:03:41

标签: wcf

我在VS 2010中创建了一个WCF服务应用程序。当我执行它时,我在以下本地URL中获得了服务页面

enter image description here

我创建了另一个自托管控制台应用程序,如下所示。它抛出以下异常

  

HTTP无法注册网址。您的进程没有此命名空间的访问权限(有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=70353。)

好吧,我对49609端口号没什么特别的兴趣。我只是从其他工作服务中复制了它。

现在,我没有运行WCF服务的最低权限。我需要做些什么改变才能使以下代码成功?

注意:我没有机会获得此计算机的管理员权限。

注意:我可以使用任何可用的端口号。

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        string baseAddress = "http://" + Environment.MachineName + ":49609/Service";
        ServiceHost host1 = new ServiceHost(typeof(Service1), new Uri(baseAddress));
        host1.AddServiceEndpoint(typeof(ConsoleApplication1.IService1), new BasicHttpBinding(), baseAddress);
        host1.Open();

    }
    static Binding GetBinding()
    {
        BasicHttpBinding result = new BasicHttpBinding();
        return result;
    }

}

}

服务

public class Service1 : IService1
{
    public int Add(int n1, int n2)
    {
        return n1 + n2;
    }
}

[ServiceContract]
public interface IService1
{
    [OperationContract]
    int Add(int n1, int n2);
}

2 个答案:

答案 0 :(得分:6)

对于使用HTTP.sys(这是WCF自托管方案使用的)打开传入(侦听)TCP端口的控制台应用程序,它们需要具有管理权限,或者对于具有管理权限的某个帐户来保留用于特定帐户(或所有帐户)的“名称空间”(即端口/路径对)。您提到您无法获得管理员权限,因此您需要在计算机上获得一些管理员才能授予您访问某些名称空间的权限。

例如,在我的一台机器中,我从未以管理员身份运行我的VS(或者尝试我的最好,因为有些操作需要它),但是为了启动WCF服务,我选择了一条路径(在我的情况下,{{ 1}}),我重用该路径作为我的服务的基地址。所以我必须以管理员身份运行以下命令行:

http://<my-machine-name>:8000/Service

在你的情况下,你需要在框中找到一个管理员来为你运行类似的命令。

答案 1 :(得分:1)