Server对象,HttpServerUtility类,获取服务器信息

在Asp.net WebForm中,Server对象是HttpServerUtility类的实例。看下图:

  

而在Asp.net MVC中,Server对象是HttpServerUtilityBase对象。

来看下HttpServerUtility类提供的功能。顺便以一个ashx页面来展示一下该类的作用。

一、属性

  MachineName    获取服务器的计算机名称。   

ScriptTimeout   获取和设置请求超时值(以秒计)。

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Write(context.Server.MachineName);     //输出 KISSDODOG-PC 获取计算机名
            context.Response.Write(context.Server.ScriptTimeout);   //输出 110
        }

二、方法

ClearError         清除前一个异常。

CreateObject         已重载。 创建 COM 对象的一个服务器实例。

CreateObjectFromClsid    创建 COM 对象的服务器实例,该对象由对象的类标识符 (CLSID) 标识。

Execute           已重载。 在当前请求的上下文中执行指定资源的处理程序,然后将执行返回给调用它的页。

GetLastError         返回前一个异常。

HtmlDecode         已重载。 对已被编码以消除无效 HTML 字符的字符串进行解码。

HtmlEncode         已重载。 对要在浏览器中显示的字符串进行编码。

MapPath          返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。 该方法经常使用。将虚拟路径转换为服务器物理路径。

Transfer          已重载。 终止当前页的执行,并为当前请求开始执行新页。

TransferRequest      已重载。 异步执行指定的 URL。

UrlDecode         已重载。 对字符串进行解码,该字符串针对 HTTP 传输进行了编码并在 URL 中发送到服务器。

UrlEncode         已重载。 编码字符串,以便通过 URL 从 Web 服务器到客户端进行可靠的 HTTP 传输。

UrlPathEncode        对 URL 字符串的路径部分进行 URL 编码并返回编码后的字符串。

UrlTokenDecode     将 URL 字符串标记解码为使用 64 进制数字的等效字节数组。

UrlTokenEncode     将一个字节数组编码为使用 Base 64 编码方案的等效字符串表示形式,Base 64 是一种适于通过 URL 传输数据的编码方案。

            context.Response.Write(context.Server.MapPath("/"));    //输出 C:\Users\Administrator\Desktop\WebApplication1\WebApplication1\    //该方法经常用,将虚拟路径转换为物理路径
            context.Response.Write("<div style=‘HtmlEncode测试</div>");  //如果不编码,默认就是会被浏览器解析的
            context.Response.Write(context.Server.HtmlEncode("<div style=‘HtmlEncode测试</div>"));  //经过编码之后 原样输出

效果如下:

  

我们将那段经过HTML编码之后的字符解码之后再进行输出查看效果。

            string str = "&lt;div style='#39;&gt;HtmlEncode测试&lt;/div&gt;";
            context.Response.Write(context.Server.HtmlDecode(str));

效果如下

  

从效果中我们看出,经过编码之后效果又变回被浏览器解析的了。

下面来看看Excute方法:

test.ashx页面:

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Write("我是第一个text.ashx处理结果");
            context.Response.Write("<br/>");
            context.Server.Execute("/Default.aspx");
            context.Response.Write("我是第二个text.ashx处理结果");
        }

Default.aspx页面代码:

        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("我是Default.aspx处理的输出!");
        }

效果:

  

  很明显可以看到,Excute可以将请求再给另外一个处理程序,用于再次处理页面,当请求完毕后会返回到本页面继续执行,请求上下文,包括表单数据,URL信息都都会传送过去。Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。

  Server.Transfer与Response.Redirect方法类似,只是Response.Redirect的作用相似,不同之处在于,Response.Redirect是客户端发送请求到服务器,服务器执行Response.Redirect之后,返回302,浏览器接收到请求后,再次发送一次请求到要跳转的URL,而Server.Transfer的跳转完全是在服务器端,浏览器根本不知道已经跳转了,因此路径显示的仍然是原路径。

  在网络状态较好的情况下,Redirect(url)方法效率最高!! 可重定向到同一台或非同一台服务器上的aspx或非aspx(html)资源 Server.Transfer方法和Server.Execute方法最灵活!! 但只能转到同一Application目录下,也有可能导致不期望的结果发生 Server.Execute方法占用资源最多.

text.ashx代码:

        public void ProcessRequest(HttpContext context)
        {
            context.Server.Transfer("/Default.aspx");
        }

Default.aspx代码:

        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("我是Default.aspx处理的输出!");
        }

效果:

  

test.ashx页面代码:

        public void ProcessRequest(HttpContext context)
        {
            string url = "http://www.xxx.com/username=zhangsan&Age=";
            context.Response.Write(context.Server.UrlEncode(url));  //URL路径编码
            context.Response.Write("<br/>");
            string encodeurl = "http%3a%2f%2fwww.xxx.com%2fusername%3dzhangsan%26Age%3d";
            context.Response.Write(context.Server.UrlDecode(encodeurl));
        }

显示效果:

  

      

时间: 2024-12-18 08:19:17

Server对象,HttpServerUtility类,获取服务器信息的相关文章

Android之使用MediaMetadataRetriever类获取媒体信息

一.昨天.介绍了使用MediaMetadataRetriever类来获取视频第一帧:http://blog.csdn.net/u012561176/article/details/47858099,今天,来介绍一下使用MediaMetadataRetriever类获取媒体信息. ??1.当中用到了MediaMetadataRetriever类的无參构造函数:MediaMetadataRetriever() 2.当中用到了MediaMetadataRetriever类的一些经常用法:setData

.NET获取服务器信息,如服务器版本、IIS等

.NET获取服务器信息,如服务器版本.IIS等 .NET获取服务器信息,如服务器版本.IIS版本.数据库大小.网站系统空间占用大小.网站部署路径等等 .NET获取系统环境信息 #region 返回操作系统信息 .net版本 数据库大小  程序大小等方法/// <summary>/// 获取服务器系统信息/// </summary>public string GetOSVersion()    {        OperatingSystem os = Environment.OSV

python使用psutil获取服务器信息

>>> import psutil 获取cpu信息>>> psutil.cpu_times()scputimes(user=128258.38, nice=12.29, system=88369.31, idle=6713420.33, iowait=3290.63, irq=1069.04, softirq=3368.56, steal=0.0, guest=0.0) >>> psutil.cpu_times().idle 6717807.87 获取

获取服务器信息

#region 获取服务器及用户信息 private void DataLoad() { DateTime sTime = DateTime.Now; ServerOS = Environment.OSVersion.ToString(); //操作系统: CpuSum = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS"); //CPU个数: CpuType = Environment.GetEnvironmentVa

salt-api 获取服务器信息,minion批量执行cmd命令

import requests import json try: import cookielib except: import http.cookiejar as cookielib # 使用urllib2请求https出错,做的设置 import ssl context = ssl._create_unverified_context() class SaltAPI(object): """ 定义salt api接口的类 初始化获得token ""&q

PHP】获取客户端(浏览器)信息、获取客户端系统信息、获取服务器信息

* 获取客户端浏览器信息 * @param null * @author https://blog.jjonline.cn/phptech/168.html * @return string */ function get_broswer(){ $sys = $_SERVER['HTTP_USER_AGENT']; //获取用户代理字符串 if (stripos($sys, "Firefox/") > 0) { preg_match("/Firefox\/([^;)]+

通过python自动化获取服务器信息,并写入到excel

博主目前在电信外包工作,比较坑,因为涉及到统计服务器信息的工作,而且统计服务器的个数大概有几百台,统计之后还要将信息全部写入到excel里去,如果是手工一个个去做,起码做一个月吧,前提无法使用ansible等工作,只能通过CRT的方式,一个个手工登上去,然后看服务器上所有进程的信息,包括进程名称,进程端口号,启停方式,工作路径.一台服务器上可能有上万个程序,你一个个手工搞,并将信息录入到excel,一个服务器就能把你搞崩溃. 那面对这个问题,我思考了需要分两步走,其一,需要获取服务器的信息文件,

python获取服务器信息

python 通过ansible 获取服务器基本信息: #!/usr/bin/env python #coding:utf-8 def sever_info(ip)   cmd = "/usr/bin/ansible {ip} -m setup".format(ip=ip)   raw_info = subprocess.check_output(cmd,shell=True)   base_info = json.loads(raw_info.split('=>')[1])['

这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧!

日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 “SYSDATE”来指定查询的日期. SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month"      FROM DUAL; 获取当前月份的最后一天 这个查询语句类似于上面那个语句,而且充分照顾到了闰年,所以当二月份有 29 号,那么就会返回 29/2 .你可以用任何的日期值替换 “SYSDATE”来指定查询的日