Software Development DotNet ASP.NET - 12、Request

Created at 2013-01-08 Updated at 2018-05-03 Category Software Development Tag DotNet / Software Development / ASP.NET

1、路径标识符。
    • http标准定为:

      • “/”代表网站根目录。
      • “../”代表上级目录。
      • “./”代表当前目录。
    • Asp.net专用,所以要用在<asp: 控件中

      • “~”代表当前应用根目录。
1
<asp:HyperLink runat="server" NavigateUrl="~/a/b.aspx"></asp:HyperLink>
  • “~”转换为html能用的相对于应用根路径,经过转换为根路径,Html才认。
    1
    Response.Write("<a href='"+VirtualPathUtility.ToAbsolute("~/a/b.aspx"));
2、VirtualPathUtility类的一些主要方法:
  • string AppendTrailingSlash(string virtualPath)
    • 检查路径是否为“/”结尾,不是的话加上。
  • string Combine(string basePath,string relativePath)
    • “~/a/b”+“c.aspx”=“~/a/c.aspx”
    • “~/a/b/”+“c.aspx”=“~/a/b/c.aspx”
  • string GetDirectory(string virtualPaht)
    • 返回虚拟路径的目录部分。
  • string MakeRelative(string fromPath,string toPath)
    • 计算两个路径的相对路径。
  • string ToAbsolute
    • 转化为绝对路径
3、Request是Page类的一个属性,所以在ashx中需要用context.Request
  • Request.AppRelativeCurrentExecutionFilePath
    • 获取当前执行请求相对于应用根目录的虚拟目录。比如“~/Handle.ashx”
  • Request.PhysicalApplicationPath
    • 获取当前应用的物理路径。“D:\a\a”
  • Request.PhysicalPath
    • 获取当前请求的物理路径。“D:a\a\b.aspx”
  • Request.RawUrl
    • 获得原始请求Url
  • Request.Url
    • 获得请求Url
    • 区别为设计到Url重写的问题
  • Request.UrlReferrer
    • 网页的来源,它去读取Http报文中的Referrer,通过这个做防盗链,全域中
    • 用来防盗链,一般用于图片。因迅雷把所有网页正确的Request.UrlReferrer保存在一个库里,下载的时候伪造Referrer。
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    context.Response.ContentType = "image/JPEG";
    string fullpath = HttpContext.Current.Server.MapPath("IMG_5433.JPG");
    using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(fullpath))
    {
    using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
    {
    using (System.Drawing.Font font = new System.Drawing.Font("宋体", 30))
    {
    if (context.Request.UrlReferrer == null)
    {
    g.Clear(System.Drawing.Color.White);
    g.DrawString("图片", font, System.Drawing.Brushes.Red, 0, 0);
    }
    else if(context.Request.UrlReferrer.Host!="localhost")
    {
    g.DrawString("仅供内部交流使用", font, System.Drawing.Brushes.Red, 0, 0);
    }
    bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    }
    }
    }
  • Request.UserHostAddress
    • 获得访问者的IP地址,配合来源地址库,分析来源。
  • Request.UserLanguages
    • 访问者支持的语言,从报问获得。
  • Request.Cookies
    • context.Request.Cookies[“mysessionID”]
    • Response.cookies[“”]
  • Request.MapPath(virtulPath)
    • 将虚拟路径转换为磁盘上的物理路径,程序用的时候才稳妥。

Table of Content

  1. 1、路径标识符。
  2. “~”转换为html能用的相对于应用根路径,经过转换为根路径,Html才认。
  3. 2、VirtualPathUtility类的一些主要方法:
  4. string AppendTrailingSlash(string virtualPath)
  5. 检查路径是否为“/”结尾,不是的话加上。
  6. string Combine(string basePath,string relativePath)
  7. “~/a/b”+“c.aspx”=“~/a/c.aspx”
  8. “~/a/b/”+“c.aspx”=“~/a/b/c.aspx”
  9. string GetDirectory(string virtualPaht)
  10. 返回虚拟路径的目录部分。
  11. string MakeRelative(string fromPath,string toPath)
  12. 计算两个路径的相对路径。
  13. string ToAbsolute
  14. 转化为绝对路径
  15. 3、Request是Page类的一个属性,所以在ashx中需要用context.Request
  16. Request.AppRelativeCurrentExecutionFilePath
  17. 获取当前执行请求相对于应用根目录的虚拟目录。比如“~/Handle.ashx”
  18. Request.PhysicalApplicationPath
  19. 获取当前应用的物理路径。“D:\a\a”
  20. Request.PhysicalPath
  21. 获取当前请求的物理路径。“D:a\a\b.aspx”
  22. Request.RawUrl
  23. 获得原始请求Url
  24. Request.Url
  25. 获得请求Url
  26. 区别为设计到Url重写的问题
  27. Request.UrlReferrer
  28. 网页的来源,它去读取Http报文中的Referrer,通过这个做防盗链,全域中
  29. 用来防盗链,一般用于图片。因迅雷把所有网页正确的Request.UrlReferrer保存在一个库里,下载的时候伪造Referrer。
  30. Request.UserHostAddress
  31. 获得访问者的IP地址,配合来源地址库,分析来源。
  32. Request.UserLanguages
  33. 访问者支持的语言,从报问获得。
  34. Request.Cookies
  35. context.Request.Cookies[“mysessionID”]
  36. Response.cookies[“”]
  37. Request.MapPath(virtulPath)
  38. 将虚拟路径转换为磁盘上的物理路径,程序用的时候才稳妥。
  • 推荐文章(由hexo文章推荐插件驱动)
  • Site by Reinhard Hsu using Hexo & Random

    Hide