仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 644|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET编程:ASP.NET将Web站点下的相对路径转换为虚...

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:37:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。asp.net|web|站点|转换很常常利用到的一个功效,但在在网上却一向没有找到相干的办理办法,明天借着项目使用到的时机写了两个将相对路径转换为假造路径封装好的办法
将Web站点下的相对路径转换为相对指定页面的假造路径
/**////<summary>
///将Web站点下的相对路径转换为相对指定页面的假造路径
///</summary>
///<paramname="page">以后页面指针,通常是this</param>
///<paramname="specifiedPath">相对路径</param>
///<returns>假造路径,型如:../../</returns>
publicstaticstringConvertSpecifiedPathToRelativePathForPage(Pagepage,stringspecifiedPath)
{
//根目次假造路径
stringvirtualPath=page.Request.ApplicationPath;
//根目次相对路径
stringpathRooted=HostingEnvironment.MapPath(virtualPath);
//页面假造路径
stringpageVirtualPath=page.Request.Path;
if(!Path.IsPathRooted(specifiedPath)||specifiedPath.IndexOf(pathRooted)==-1)
{
thrownewException(string.Format(""{0}"是假造路径而不是相对路径!",specifiedPath));
}
//转换成绝对路径
//(测试发明,pathRooted在VS2005自带的服务器跟在IIS下根目次大概假造目次运转仿佛纷歧样,
//有此中央前面会加"",有些则不会,为保险起见判别一下)
if(pathRooted.Substring(pathRooted.Length-1,1)=="")
{
specifiedPath=specifiedPath.Replace(pathRooted,"/");
}
else
{
specifiedPath=specifiedPath.Replace(pathRooted,"");
}
stringrelativePath=specifiedPath.Replace("","/");
string[]pageNodes=pageVirtualPath.Split(/);
//减往最初一个页面和后面一个""值
intpageNodesCount=pageNodes.Length-2;
for(inti=0;i<pageNodesCount;i++)
{
relativePath="/.."+relativePath;
}
if(pageNodesCount>0)
{
//假如存在"..",则把最后面的"/"往失落
relativePath=relativePath.Substring(1,relativePath.Length-1);
}
returnrelativePath;
}
第二个办法明显是从第一个办法中的前部分抽掏出来的,以是懒得往增加相干正文:P
将Web站点下的相对路径转换为假造路径
/**////<summary>
///将Web站点下的相对路径转换为假造路径
///注:非Web站点下的则不转换
///</summary>
///<paramname="page">以后页面指针,通常是this</param>
///<paramname="specifiedPath">相对路径</param>
///<returns>假造路径,型如:~/</returns>
publicstaticstringConvertSpecifiedPathToRelativePath(Pagepage,stringspecifiedPath)
{
stringvirtualPath=page.Request.ApplicationPath;
stringpathRooted=HostingEnvironment.MapPath(virtualPath);
if(!Path.IsPathRooted(specifiedPath)||specifiedPath.IndexOf(pathRooted)==-1)
{
returnspecifiedPath;
}
if(pathRooted.Substring(pathRooted.Length-1,1)=="")
{
specifiedPath=specifiedPath.Replace(pathRooted,"~/");
}
else
{
specifiedPath=specifiedPath.Replace(pathRooted,"~");
}
stringrelativePath=specifiedPath.Replace("","/");
returnrelativePath;
}
将假造路径转相对路就没甚么好说的了,HttpRequest.MapPath办法专门干这事
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-19 19:41:34 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-25 11:15:26 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
乐观 该用户已被删除
地板
发表于 2015-2-2 21:51:55 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
简单生活 该用户已被删除
5#
发表于 2015-2-8 07:47:33 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
兰色精灵 该用户已被删除
6#
发表于 2015-2-25 01:13:12 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
透明 该用户已被删除
7#
发表于 2015-3-7 15:00:14 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
爱飞 该用户已被删除
8#
发表于 2015-3-21 22:08:44 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-2-24 04:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表