C#在Windows窗体或控制台上使用HttpListener和Request.ServerVar
|
项目目标:
使用控制台或 Windows窗体应用程序创建本地代理判断程序,以调试和测试连接. >项目必须请求并接收代理ServerVariables以在客户端显示. 问题: >是否可以在本地Windows或控制台应用程序上使用Request.ServerVariables,还是特定于ASP? 使用的参考文献: 示例代码: using System.IO;
using System.Net;
using System.Web;
using System.Collections.Specialized;
namespace IPJudge
{
public class IPJudgeClass : IHttpModule
{
public static void Main()
{
using (HttpListener listener = new HttpListener())
{
listener.AuthenticationSchemes = AuthenticationSchemes.None;
listener.Prefixes.Add("http://localhost:8080/");
//listener.Prefixes.Add("https://localhost/");
listener.Start();
HttpListenerContext ctx = listener.GetContext();
ctx.Response.StatusCode = 200;
string name = ctx.Request.QueryString["name"];
StreamWriter writer = new StreamWriter(ctx.Response.OutputStream);
writer.WriteLine("<P>Hello,{0}</P>",name);
writer.WriteLine("<ul>");
foreach (string header in ctx.Request.Headers.Keys)
{
writer.WriteLine("<li><b>{0}:</b> {1}</li>",header,ctx.Request.Headers[header]);
}
writer.WriteLine("</ul>");
writer.Close();
ctx.Response.Close();
listener.Stop();
}
}
public void Init(HttpApplication app)
{
app.AcquireRequestState += new System.EventHandler(app_AcquireRequestState);
app.PostAcquireRequestState += new System.EventHandler(app_PostAcquireRequestState);
}
public void app_AcquireRequestState(object o,System.EventArgs e)
{
HttpApplication httpApp = (HttpApplication)o;
HttpContext ctx = HttpContext.Current;
ctx.Response.Write(" Executing AcquireRequestState ");
ctx.Response.Close();
}
public void Dispose()
{
// TODO:
// Add code to clean up the
// instance variables of a module.
}
public void app_PostAcquireRequestState(object o,System.EventArgs e)
{
HttpApplication httpApp = (HttpApplication)o;
HttpContext ctx = HttpContext.Current;
string remotehost = ctx.Request.ServerVariables["REMOTE_ADDR"];
string httpuseragent = ctx.Request.ServerVariables["HTTP_USER_AGENT"];
string requstmethod = ctx.Request.ServerVariables["REQUEST_METHOD"];
string httpreferer = ctx.Request.ServerVariables["HTTP_REFERER"];
string HTTPXFORWARDEDFOR = ctx.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
string HTTPFORWARDEDFOR = ctx.Request.ServerVariables["HTTP_FORWARDED_FOR"];
string HTTPXFORWARDED = ctx.Request.ServerVariables["HTTP_X_FORWARDED"];
ctx.Response.Write("<P>REMOTE_ADDR: " + remotehost + "</P>");
ctx.Response.Write("<P>HTTP_USER_AGENT: " + httpuseragent + "</P>");
ctx.Response.Write("<P>REQUEST_METHOD: " + httpuseragent + "</P>");
ctx.Response.Write("<P>HTTP_REFERER: " + httpreferer + "</P>");
ctx.Response.Write("<P>HTTP_X_FORWARDED_FOR: " + httpreferer + "</P>");
ctx.Response.Write("<P>HTTP_FORWARDED_FOR: " + httpreferer + "</P>");
ctx.Response.Write("<P>HTTP_X_FORWARDED: " + httpreferer + "</P>");
ctx.Response.Close();
}
}
}
解决方法
您的代码正在合并ASP.NET逻辑和应用程序逻辑,这些逻辑不能/不应该完成.
IHttpModule由IIS在ASP.NET WEB应用程序中运行 Main方法由控制台应用程序运行 问题: > Request.ServerVariables只能在Web服务器上访问 http://msdn.microsoft.com/en-us/library/6915t83k.aspx >不确定你在这里谈论的是什么,你有一些示例代码吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Xml文件转化为对象,对象转化为Xml
- ruby-on-rails – 轮胎弹性搜索 – 强制导入
- ios – Xcode 4.5 – 在我的设备上无线构建应用程
- 用ruby连接到Tor网络
- ruby-on-rails – 如何在Rails“content_tag”属
- 【React Native开发】React Native控件之TextInp
- Using NDK-STACK to Debug Cocos2dx Android Pro
- c# – 如何正确地将网站分成不同的区域?
- reactjs – PropTypes React Native不是对象
- ruby-on-rails – 如何创建弹出窗口以在rails 3中
