使用HttpListener从Web API到控制台应用程序的无效请求

时间:2014-06-18 23:55:19

标签: c# asp.net-web-api httplistener

ASP.NET Web API尝试与LAN中另一台计算机上的控制台应用程序通信,其中包含IP地址和PORT的组合,其中特定的控制台应用程序正在侦听传入请求。但是我收到了错误请求的Http错误。请求主机名是无效错误。我不知道为什么会这样。我在控制台应用程序正在侦听的机器上使用netsh为该URL授予了权限。

以下是尝试与Console App进行通信的Web API代码

HttpWebRequest toClient = (HttpWebRequest)WebRequest.Create("http://" + GetRemoteIP(Msg) + ":10000");
toClient.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
toClient.Accept = "application/json, text/javascript, */*; q=0.01";
toClient.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";
String DatatoClient = "Hello";
toClient.Method = "POST";

同样在控制台应用程序中,我有以下代码

listener = new HttpListener();
listener.Prefixes.Add("http://localhost:10000/");
Console.WriteLine("HttpProcessor in Proxy Started and Accepting Connections.......");
listener.Start();
HttpListenerContext ctx = listener.GetContext();
var reader = new StreamReader(ctx.Request.InputStream, ctx.Request.ContentEncoding);
String data = reader.ReadToEnd();
//Extract the Account and Amount from the Http Request
Console.WriteLine("Data from HttpReq from API:{0}",data );

if (data == "hello")
{
    rstr += "Yes";
}
else
{
    rstr += "No";
}
byte[] buf = Encoding.UTF8.GetBytes(rstr);
ctx.Response.ContentLength64 = buf.Length;
ctx.Response.OutputStream.Write(buf, 0, buf.Length);
ctx.Response.OutputStream.Close();
listener.Stop();
listener.Close();

我在控制台App所在的远程计算机上使用以下命令

为端口授予了netsh权限
netsh> http add urlacl url=http://localhost:10000/ user=everyone

但我在Console AP上没有收到任何请求,而是在Web API上收到上述错误。为什么会这样?我错过了什么吗?

0 个答案:

没有答案