Fra*_*ger 6 .net sockets web-services
赢7和VS2010 B2.我正在尝试使用内置编写一个最小的Web服务器HttpListener.但是,我一直收到AccessDenied异常.这是代码:
int Run(string[] args) {
_server = new HttpListener();
_server.Prefixes.Add("http://*:9669/");
_server.Start();
Console.WriteLine("Server bound to: {0}", _server.Prefixes.First());
_server.BeginGetContext(HandleContext, null);
}
Run Code Online (Sandbox Code Playgroud)
如果我绑定到系统端口,我可以理解需要以管理员身份运行,但我不明白为什么我对9669的绑定应该需要特殊权限.
有任何想法吗?
Fra*_*ger 25
感谢这个问题:我可以在Vista上监听端口(使用HttpListener或其他.NET代码)而无需管理员权限吗?
我有一个答案.
netsh http add urlacl url=http://*:9669/ user=fak listen=yes
疯.这是我修改过的功能:
int Run(string[] args) {
var prefix = "http://*:9669/";
var username = Environment.GetEnvironmentVariable("USERNAME");
var userdomain = Environment.GetEnvironmentVariable("USERDOMAIN");
_server = new HttpListener();
_server.Prefixes.Add(prefix);
try {
_server.Start();
}
catch (HttpListenerException ex) {
if (ex.ErrorCode == 5) {
Console.WriteLine("You need to run the following command:");
Console.WriteLine(" netsh http add urlacl url={0} user={1}\\{2} listen=yes",
prefix, userdomain, username);
return -1;
}
else {
throw;
}
}
Console.WriteLine("Server bound to: {0}", _server.Prefixes.First());
_server.BeginGetContext(HandleContext, null);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11345 次 |
| 最近记录: |