我正在尝试生成一个HTTP侦听器,它将接受一个文件并将其保存到某个位置。
下面的代码看到有东西进来,但是没有保存文件。
如果您能查看代码并让我知道我哪里出错了,我将不胜感激。
class Program
{
static void Main(string[] args)
{
Listener();
}
public static void Listener()
{
const string prefix = "http://localhost:8082/";
var listener = new HttpListener();
listener.Prefixes.Add(prefix);
try
{
listener.Start();
}
catch (HttpListenerException hlex)
{
return;
}
while (listener.IsListening)
{
var context = listener.GetContext();
ProcessRequest(context);
}
listener.Close();
}
public static void ProcessRequest(HttpListenerContext context)
{
var filename = Path.GetFileName(context.Request.RawUrl);
var path = Path.Combine(@"c:\listenerFiles", filename);
try
{
context.Response.StatusCode = (int)HttpStatusCode.Accepted;
Console.WriteLine(context.Response.StatusCode = (int)HttpStatusCode.Accepted);
var receivingFile = File.ReadAllBytes(path);
Console.WriteLine(receivingFile);
context.Response.ContentLength64 = receivingFile.Length;
using (var s = context.Response.OutputStream)
s.Write(receivingFile, 0, receivingFile.Length);
}
catch (Exception e)
{
return;
}
}
}
当它获取文件时,它抛出的错误读取
UnauthorisedAccessExcetion
访问路径&#c; \ listenerFiles'被拒绝。
答案 0 :(得分:3)
永远不会在没有处理的情况下发现异常! catch (Exception e){ return; }
是被禁止的!
在using
上使用OutputStream
是一个坏主意,因为它位于using
之后,因此HTTP处理程序无法在之后进行提取。移除using
并查看其是否有效。
同时检查IIS进程是否可以访问文件所在的路径。