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

LCJ*_*LCJ 2 wcf

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

在此输入图像描述

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

HTTP无法注册URL.您的进程没有此命名空间的访问权限(有关详细信息,请参阅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;
    }

}

}
Run Code Online (Sandbox Code Playgroud)

服务

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);
}
Run Code Online (Sandbox Code Playgroud)

car*_*ira 6

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

例如,在我的一台机器中,我从未以管理员身份运行我的VS(或者尝试我的最好,因为有些操作需要它),但是为了启动WCF服务,我选择了一条路径(在我的情况下http://<my-machine-name>:8000/Service),并且我重用了该路径作为我的服务的基地址.所以我必须以管理员身份运行以下命令行:

netsh http add urlacl url=http://+:8000/Service user=MYDOMAIN\myusername
Run Code Online (Sandbox Code Playgroud)

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