`
charrysong
  • 浏览: 48922 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

在ASP.NET 中获得网站绝对路径的几种方法

阅读更多

其实很多人在编写 ASP.NET 应用程序的时候,有时为了更好地进行控制静态文件的路径,如在模板页或者用户控件中设置js或者css文件的路径等,采用绝对路径是难免的。下面就是几种获取绝对路径的几种方法。

C#代码
  1. VirtualPathUtility.ToAbsolute( " ~/ " )   
  2. HttpRuntime.AppDomainAppVirtualPath   
  3. Request.ApplicationPath   
  4. Page.ResolveUrl( " ~ " )   
VirtualPathUtility.ToAbsolute( " ~/ " )
HttpRuntime.AppDomainAppVirtualPath
Request.ApplicationPath
Page.ResolveUrl( " ~ " ) 

以上代码生成的结果如下:
当以网站的方式访问时,结果如下:

VirtualPathUtility.ToAbsolute("~/") = /
HttpRuntime.AppDomainAppVirtualPath = /
Request.ApplicationPath = /
Page.ResolveUrl("~") = /

当以虚拟目录(http://localhost:806/web2/url.aspx)访问时,结果如下:

VirtualPathUtility.ToAbsolute("~/") = /web2/
HttpRuntime.AppDomainAppVirtualPath = /web2
Request.ApplicationPath = /web2
Page.ResolveUrl("~") = /web2/

采用第二种和第三种方法,还需要做一下处理,因为网站访问时是以/结尾,而以虚拟目录访问时则是没有/的,进行还得进行一次判断,稍微麻烦一点。
但是,这些方法在页面中使用是没有任何问题的,但是如果在 Global 的 Application_Start 事件里需要得到网站的绝对路径,则需要使用前面2种方法,如果使用第三种方法,则会报告如下的错误:
Request is not available in this context
所以,只能采取头2种方法。例如

C#代码
  1. void Application_Start( object sender, EventArgs e)   
  2. {   
  3.     System.IO.StreamWriter s = new System.IO.StreamWriter(HttpRuntime.AppDomainAppPath + " log.txt " );   
  4.     s.WriteLine(VirtualPathUtility.ToAbsolute( " ~/ " ));   
  5.     s.WriteLine(HttpRuntime.AppDomainAppVirtualPath);   
  6.     s.Close();   
  7. }   

转自:http://www.ok22.org/art_detail.aspx?id=159

分享到:
评论

相关推荐

    asp.net 获取路径的几种方式

    asp.net 获取路径的几种方式 asp.net 获取路径的几种方式 asp.net 获取路径的几种方式

    asp.net获取网站绝对路径示例

    在编写 ASP.NET 应用程序的时候,有时为了更好地进行控制静态文件的路径,如在模板页或者用户控件中设置js或者css文件的路径等,采用绝对路径是难免的。下面就是几种获取绝对路径的几种方法

    asp.net知识库

    在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值...

    Asp.net把图片存入数据库和读取图片的方法

    网上关于ASP.NET上传图片到数据库的资料非常多,常用的如下:存储图片类型数据有以下几种方式:1.将图片转换为二进制数组(byte[]) 代码如下:byte[] fileData = this.FileUpload1.FileBytes; 2. 根据路径将文件转换...

    IIS7配置(含ASP+ASP.NET配置)

    集成 .NET 模式下,应用程序不应在 <system.web>/<httpModules> 配置节中指定 ASP.NET 模块组件,而应使用 <system.webServer>/<modules> 配置节来加载 ASP.NET 模块组件。经典 .NET 模式则是我们以前习惯的 IIS 6 ...

    获取当前路径的几种方法

    ASP.net app_Code dll 类中获得当前...在ASP.NET 页面中获得当前路径的方法很多,比如 MapPath 和 Request 对象。 但是在 app_Code 文件夹下的类文件. 想要获得当前的目录,会发现上面的 MapPath 和 Request 都无法使用.

    使用ASP.NET开发移动通讯的几种方法

    现在的消费者不仅仅要求通过个人电脑访问互联网上的资源...他们的第一个本能的反映是通过一个现有的Web网站来创建多个导航路径。很多Web开发者使用这种机制来解决不同版本的浏览器对HTML规范的支持程 度不一样的问题。

    FCKeditor 网页文本编辑器ASP.NET版

     3、加上几种我们常用的字体的方法,例如:  修改FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;  改为:FCKConfig.FontNames = '宋体;黑体;隶书;楷体_GB2312;Arial...

    asp.net面试题

    1.new有几种用法 第一种:new Class(); 第二种:覆盖方法 public new XXXX(){} 第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。 2.如何把一个array复制到arrayList里 foreach( ...

    Url重写篇视频------本讲将通过实例比较ASP.NET下的三种典型URL重写方案

    为了比较着几种重写方案,正则表达式基本上是和前面的IIRF定义中的规则类似的。 页面测试 定义完这些重写规则,我们就可以试着在页面中使用它们了。例如,如果我们写一个测试页面如下: Default.aspx ...

    IIS配置asp的网站

    2. 配置IIS:在控制面板中找到“管理工具”,打开“Internet信息服务(IIS)管理器”,然后配置默认网站的属性,选择主目录,设置路径为asp.net,框架类型选择3.5,框架选择2.0。 3. 添加Web服务扩展:在IIS管理器...

    亮剑.NET深入体验与实战精要2

    5.5.3 ASP.NET连接Oracle失败的解决方法 245 本章常见技术面试题 246 常见面试技巧之经典问题巧回答 246 本章小结 247 第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 ...

    C#获取程序运行路径的几种方式

    C#获取程序运行时路径的几种方式,包含winForm和ASP.NET获取方式。

    亮剑.NET深入体验与实战精要3

    5.5.3 ASP.NET连接Oracle失败的解决方法 245 本章常见技术面试题 246 常见面试技巧之经典问题巧回答 246 本章小结 247 第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 ...

    ASP.NET基于C#开发的2D游戏密室寻宝源码+exe可执行文件+项目使用说明(本科毕设).zip

    在使用笔者相同的实现方法(代码)时,有以下几个可以优化的方法。由于时间关系没有改动,需要或感兴趣的读者可自行实现。 1. 碰到陷阱人物退回上一步位置->提前判断下一步类型并决定是否移动 2. 使用稿子和炸药...

    无忧招聘系统 v2.0 招聘网站源码

    5:服务里要求启动asp.net状态服务,不然后台登录不了 6:后台路径http://localhost/admin/login.aspx(用户名及密码:admin admin) 如果在安装过程有不明白的请加无忧招聘系统技术支持 本系统只用于本地测试,只能用...

    Visual Studio.Net(VS) 源码管理器

    4、 使用"文件"——"新建"——"项目"命令,在项目类型中选择"Visual C#项目",在"模板"中选择"ASP.NET Web应用程序"。在"位置"栏中填写http://localhost/MyWebApp。并选择"添入解决方案"选项。确定。 这样就在...

    Cambridge.Raven:Raven的ASP.NET MVC身份验证筛选器

    导入后,可以使用几种不同的方法来使用Raven身份验证。控制器如果控制器的所有动作都需要Raven身份验证,则最简单的方法是从RavenController类继承。 public class MyController : RavenContro

    IIS6架设网站常见问题及答疑.docx

    原因分析:IIS支持以下几种Web身份验证方法:(1)匿名身份验证 IIS创建IUSR_计算机名称帐户(其中计算机名称是正在运行IIS的服务器的名称),用来在匿名用户请求Web内容时对他们进行身份验证。此帐户授予用户本地...

Global site tag (gtag.js) - Google Analytics