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

时间:2010-04-02 01:53:02

标签: 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();

listener.Start()发生了失败,但Access is denied.除外。

2 个答案:

答案 0 :(得分:8)

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

netsh http add urlacl url=http://server1:1234/ user=Everyone

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

netsh http add urlacl url=http://server1:1234/ user=Steve

这样您就不需要以管理员身份运行应用程序

答案 1 :(得分:3)

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

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

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

可以在安装时以编程方式完成。如果我感兴趣,请告诉我,我会挖出一些代码。

编辑:

实际上,由于我无法确定代码来自何处,我无法在此处发布。有一个codeplex project for doing this kind of thing绝对值得分开。

/ EDIT

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

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