我在C#中编写HTTP服务器.
当我尝试执行该功能时,HttpListener.Start()我得到一个HttpListenerException说法
"拒绝访问".
当我在Windows 7中以管理模式运行应用程序时,它工作正常.
我可以在没有管理员模式的情况下运行吗 如果有,怎么样?如果不是,如何在开始运行后让应用程序更改为管理模式?
using System;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
private HttpListener httpListener = null;
static void Main(string[] args)
{
Program p = new Program();
p.Server();
}
public void Server()
{
this.httpListener = new HttpListener();
if (httpListener.IsListening)
throw new InvalidOperationException("Server is currently running.");
httpListener.Prefixes.Clear();
httpListener.Prefixes.Add("http://*:4444/");
try
{
httpListener.Start(); //Throws Exception
}
catch (HttpListenerException ex)
{
if (ex.Message.Contains("Access is denied"))
{
return;
}
else
{
throw;
}
}
}
} …Run Code Online (Sandbox Code Playgroud) 有一个简单的http服务器API,允许您快速完成一些简单的操作,无需任何附加依赖/安装.
在没有IIS的 .NET中是否有类似的API /库?
例如,我是一个小窗口服务运行,我想添加一个简单的愚蠢Web界面,以允许本地/远程控制/监控.
我正在使用WebBrowser控件编写一个C#应用程序,我希望我显示的所有内容都来自嵌入式资源 - 而不是静态本地文件,而不是远程文件.
将控件的初始文本设置为嵌入式HTML文件非常适合此帖子启发的代码:
browser.DocumentText=loadResourceText("myapp.index.html");
private string loadResourceText(string name)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Stream stream = assembly.GetManifestResourceStream(name);
StreamReader streamReader = new StreamReader(stream);
String myText = streamReader.ReadToEnd();
return myText;
}
Run Code Online (Sandbox Code Playgroud)
就像那样,HTML中引用的文件 - javascript,图像<img src="whatever.png"/>等等都不起作用.我在这里和这里找到了类似的问题,但两者都没有问我到底是什么意思,即在exe中引用嵌入式资源,而不是文件.
我尝试res://...并使用了一个<base href='..."但似乎都没有工作(虽然我可能没有做对).
也许(根据我自己对这个问题的建议),使用一个小的嵌入式C#网络服务器是唯一的方法......但是我会想到有一些技巧可以实现这一目标吗?
谢谢!
赢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的绑定应该需要特殊权限.
有任何想法吗?
我正在开发一个HttpListener()广泛使用的应用程序.到目前为止,我一直在实际网络上进行所有测试,但我现在对此非常厌恶.
我尝试了通常的嫌疑人(localhost,127.0.0.1)和正确的端口,但没有任何反应.
Windows中的某个设置是否存在?(很明显我通常是一个*nix男孩吗?)