asp.net程序中的server对象

时间:2021-04-16

  Server对象是System.Web.HttpServerUtility类的实例。它提供若干不同的辅助方法和属性。

  HttpServerUtility方法

  MachineName

  这个属性代表页面运行所在的计算机的名称。Web服务器计算机使用这个名称在网络上标示自身。

  GetLastError()

  获取最近发生的异常对象(如果没有发生异常,则是一个空引用)。这个错误必须是在处理当前请求时发生的,并且不能是已经被处理的。它通常用于检测错误情况的应用程序事件处理程序。

  HtmlEncode()和HtmlDecode()

  把普通的字符串变成具有合法HTML字符的字符串(并相反)

  UrlEncode()和UrlDecode()

  把普通的字符串变成具有合法URL字符的字符串(并相反)

  MapPath()

  返回对应于Web服务器上特定虚拟文件路径的物理文件路径。以/为参数调用MapPath()时,将返回Web应用程序根的物理路径。MapPath()方法还支持~,它表示Web的根(例如,~/homepage.aspx)

  Transfer()

  把执行传送到当前应用程序的其他页面。它和Response.Redirect()方法相似,但速度更快。它不能用于把用户传送到Web服务器上的其他站点或者非ASP.NET页面(如HTML页面或者ASP页面) 。

  Transfer()方法是在应用程序中把用户重定向到其他页面的速度最快的方法。

Server.Transfer("newpage.aspx");这句话是正确的
Server.Transfer(http://www.aaa.com);

  MapPath()方法是Server对象另一个有用的方法。

例如:
string physicalPath=Server.MapPath("info.txt");
StreamReader reader=new StreamReader(physicalPath);
reader.Close();

  HTML和URL编码

  Server类还包含把普通字符串变成可作为URL一部分安全使用的格式或可在页面上显示的格式的方法。例如,假设你要在网页上显示下面这段文字:

  To bold text use the <b> tag.

  如果你把这段信息写到页面上或把它放在一个控件里,最终你会得到以下结果:

  To bold text use the tag.

  不仅文字<b>没有出现,浏览器还把它解释为把它后面的文字加粗的指令。为了适应这种自动的行为,必须把那些可能带来问题的值转换为等效的HTML标签。例如,在最终的HTML页面里把“<”变成“&lt;”,而在浏览器里会把它显示为<字符。

  常用的HTML实体

结果: 描述:非断行空格 编码实体:&nbsp;
结果:< 描述:小于号 编码实体:&nbsp;
结果:> 描述:大于号 编码实体:&nbsp;
结果:& 描述:&(And)记号 编码实体:&amp;
结果:" 描述:" 编码实体:&quot;

  下面这个实例使用Server.HtmlEncode()方法来解决这个问题:

  Label1.Text=Server.HtmlEncode("To bold text use the <b> tag.");

  如果你希望插入一段可能是无效的文字或者HTML标签,还可以为某些(但不是所有)输出使用HtmlEncode,如下所示:

Label1.Text="To <b>bold</b> text use the ";
Label1.Text=Server.HtmlEncode("<b>") +" tag.";

  当你从数据库中获取值但不知道这些文字是否有效的HTML时,HtmlEncode()方法特别有用。需要执行更多的操作或者需要在代码中对它们进行比较时,可以用HtmlDecode()方法把它们转化回到普通的文本。类似地,UrlEncode()方法可以通过转义空格以及其他特殊字符把文本转换为可以在URL中使用的格式。这一操作通常通过你要在查询字符串中添加的信息来执行。

  需要记住的是,HtmlEncode()方法不能把空格转化成非断行的空格。也就是说,如果你有一系列的空格字符,浏览器只会显示一个空格。虽然它不会使你的HTML无效,但它可能并不是你所希望的行为。要改变这一行为,你可以手工使用String.Replace()方法把空格替换为非断行空格。一定要保证在编码字符串之后再执行这一动作,否则非断行空格字符序列(&nbsp;)将被字符实体替代并被看做普通的文本。

line=Server.HtmlEncode(line);
line=line.Replace(" ","&nbsp;");

  类似地,HTMLEncode()方法不会把换行符转化为<br>标签。也就是说,回车会被忽略,除非你特别的插入<br>标签。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章