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中