.NET HttpListener前缀与localhost以外的任何问题

jch*_*ner 7 c# http httplistener

我正在尝试使用C#并HttpListener使用除localhost之外的任何东西,但它失败了(即如果我给它server1,即

http://localhost:1234 有效,但是

http://server1:1234 失败

代码是......

HttpListener listener = new HttpListener();
String prefix = @"http://server1:1234";
listener.Prefixes.Add(prefix);
listener.Start();
Run Code Online (Sandbox Code Playgroud)

失败发生在listener.Start()除外Access is denied..

Cly*_*rog 8

我曾经遇到过同样的问题,我通过为网络外壳(netsh)的用户/用户添加指定URL命名空间的URL保留来解决它.以下是如何为每个用户保留URL的示例,请在命令提示符下以管理员身份运行:

netsh http add urlacl url=http://server1:1234/ user=Everyone
Run Code Online (Sandbox Code Playgroud)

下面是一个如何为一个用户保留URL的示例,在管理员命令提示符下运行:

netsh http add urlacl url=http://server1:1234/ user=Steve
Run Code Online (Sandbox Code Playgroud)

这样,您无需以管理员身份运行应用程序


spe*_*der 4

您的应用程序是否以提升的权限运行?

普通帐户在未先进行预订的情况下无法挂钩 Http 管道。

http://msdn.microsoft.com/en-us/library/Aa364673

它可以在安装时以编程方式完成。如果您对此感兴趣,请告诉我,我将挖掘一些代码。

编辑:

实际上,由于我目前无法确定代码来自何处,因此无法将其发布在这里。有一个codeplex 项目可以做这种事情,绝对值得一试。

/编辑

以下是在命令行上进行预订的方法:

http://www.casadehambone.com/HowToAddAURLACLAndAvoidAddressAccessDeniedExceptionInWindowsVista.aspx