init lserp cs 5.0
This commit is contained in:
@@ -0,0 +1,297 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Text;
|
||||
using Zhaizj.Framework.Web;
|
||||
using System.Web;
|
||||
|
||||
namespace Zhaizj.Framework {
|
||||
|
||||
/// <summary>
|
||||
/// 封装了 url 的一些基本信息。
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// 如下的网址
|
||||
/// <code>
|
||||
/// Uri uri = new Uri( "http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top" );
|
||||
/// UrlInfo u = new UrlInfo( uri, "/myapp/", "myPathInfo" );
|
||||
/// </code>
|
||||
/// 返回的结果是
|
||||
/// <code>
|
||||
/// Scheme=>http
|
||||
/// UserName=>zhangsan
|
||||
/// Password=>123
|
||||
/// Host=>www.abc.com
|
||||
/// Port=>80
|
||||
/// Path=>/myapp/Photo/1984
|
||||
/// PathAndQuery=>/myapp/Photo/1984?title=eee
|
||||
/// PathInfo=>myPathInfo
|
||||
/// PathAndQueryWithouApp=>/Photo/1984?title=eee
|
||||
/// Query=>?title=eee
|
||||
/// Fragment=>#top
|
||||
/// SiteUrl=>http://zhangsan:123@www.abc.com
|
||||
/// SiteAndAppPath=>http://zhangsan:123@www.abc.com/myapp/
|
||||
/// </code>
|
||||
/// </example>
|
||||
public class UrlInfo {
|
||||
|
||||
public UrlInfo( String url ) {
|
||||
Uri uri = new UriBuilder( url ).Uri;
|
||||
initByUri( uri );
|
||||
}
|
||||
|
||||
public UrlInfo( Uri uri, String applicationPath, String pathInfo ) {
|
||||
initByUri( uri );
|
||||
this.AppPath = applicationPath;
|
||||
this.PathInfo = pathInfo;
|
||||
}
|
||||
|
||||
public UrlInfo( String url, String applicationPath, String pathInfo ) {
|
||||
Uri uri = new UriBuilder( url ).Uri;
|
||||
initByUri( uri );
|
||||
this.AppPath = applicationPath;
|
||||
this.PathInfo = pathInfo;
|
||||
}
|
||||
|
||||
private void initByUri( Uri uri ) {
|
||||
this.ub = new UriBuilder( uri );
|
||||
this.Scheme = ub.Scheme;
|
||||
this.UserName = ub.UserName;
|
||||
this.Password = ub.Password;
|
||||
this.Host = ub.Host;
|
||||
this.Port = ub.Port;
|
||||
this.Path = ub.Path;
|
||||
this.Query = ub.Query;
|
||||
this.Fragment = ub.Fragment;
|
||||
}
|
||||
|
||||
private String _AppPath;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 /myapp/
|
||||
/// </summary>
|
||||
public String AppPath {
|
||||
get { return _AppPath; }
|
||||
set { _AppPath = value; }
|
||||
}
|
||||
|
||||
private String _Scheme;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 http
|
||||
/// </summary>
|
||||
public String Scheme {
|
||||
get { return _Scheme; }
|
||||
set { _Scheme = value; }
|
||||
}
|
||||
|
||||
private String _UserName;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 zhangsan
|
||||
/// </summary>
|
||||
public String UserName {
|
||||
get { return _UserName; }
|
||||
set { _UserName = value; }
|
||||
}
|
||||
|
||||
private String _Password;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 123
|
||||
/// </summary>
|
||||
public String Password {
|
||||
get { return _Password; }
|
||||
set { _Password = value; }
|
||||
}
|
||||
|
||||
private String _Host;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 www.abc.com
|
||||
/// </summary>
|
||||
public String Host {
|
||||
get { return _Host; }
|
||||
set { _Host = value; }
|
||||
}
|
||||
|
||||
private int _Port;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 80
|
||||
/// </summary>
|
||||
public int Port {
|
||||
get { return _Port; }
|
||||
set { _Port = value; }
|
||||
}
|
||||
|
||||
private String _Path;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 /myapp/Photo/1984
|
||||
/// </summary>
|
||||
public String Path {
|
||||
get { return _Path; }
|
||||
set { _Path = value; }
|
||||
}
|
||||
|
||||
private String _Query;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 ?title=eee
|
||||
/// </summary>
|
||||
public String Query {
|
||||
get { return _Query; }
|
||||
set { _Query = value; }
|
||||
}
|
||||
|
||||
private String _Fragment;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 #top
|
||||
/// </summary>
|
||||
public String Fragment {
|
||||
get { return _Fragment; }
|
||||
set { _Fragment = value; }
|
||||
}
|
||||
|
||||
private String _PathInfo;
|
||||
|
||||
public String PathInfo {
|
||||
get { return _PathInfo; }
|
||||
set { _PathInfo = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 网站根目录之后的路径(如果当前应用放在虚拟目录中,则包括虚拟目录),例如
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 /myapp/Photo/1984?title=eee
|
||||
/// </summary>
|
||||
public String PathAndQuery {
|
||||
get { return Path + Query; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 不包括网站域名和虚拟目录的完整路径,前面包括斜杠"/"。例如
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 /Photo/1984?title=eee
|
||||
/// </summary>
|
||||
public String PathAndQueryWithouApp {
|
||||
get {
|
||||
String result = strUtil.TrimStart( PathAndQuery, AppPath );
|
||||
return result.StartsWith( "/" ) ? result : "/" + result;
|
||||
}
|
||||
}
|
||||
|
||||
private String siteUrl;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 http://zhangsan:123@www.abc.com
|
||||
/// </summary>
|
||||
public String SiteUrl {
|
||||
get {
|
||||
if (siteUrl == null)
|
||||
siteUrl = getSiteUrl();
|
||||
return siteUrl;
|
||||
}
|
||||
}
|
||||
|
||||
private String siteAndAppPath;
|
||||
|
||||
/// <summary>
|
||||
/// http://zhangsan:123@www.abc.com/myapp/Photo/1984?title=eee#top 返回 http://zhangsan:123@www.abc.com/myapp/
|
||||
/// </summary>
|
||||
public String SiteAndAppPath {
|
||||
get {
|
||||
if (siteAndAppPath == null)
|
||||
siteAndAppPath = strUtil.Join( SiteUrl, AppPath );
|
||||
return siteAndAppPath;
|
||||
}
|
||||
}
|
||||
|
||||
private String getSiteUrl() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append( Scheme );
|
||||
sb.Append( "://" );
|
||||
append_username_password( sb );
|
||||
sb.Append( Host );
|
||||
append_port( sb );
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private void append_username_password( StringBuilder sb ) {
|
||||
if (strUtil.IsNullOrEmpty( UserName ) && strUtil.IsNullOrEmpty( Password ))
|
||||
return;
|
||||
|
||||
if (strUtil.HasText( UserName ) && strUtil.HasText( Password )) {
|
||||
sb.Append( UserName );
|
||||
sb.Append( ":" );
|
||||
sb.Append( Password );
|
||||
sb.Append( "@" );
|
||||
return;
|
||||
}
|
||||
|
||||
String up = null;
|
||||
if (strUtil.HasText( UserName ))
|
||||
up = UserName;
|
||||
else if (strUtil.HasText( Password ))
|
||||
up = Password;
|
||||
|
||||
sb.Append( up );
|
||||
sb.Append( ":" );
|
||||
sb.Append( up );
|
||||
sb.Append( "@" );
|
||||
return;
|
||||
}
|
||||
|
||||
private void append_port( StringBuilder sb ) {
|
||||
if (Port == 80) return;
|
||||
|
||||
sb.Append( ":" );
|
||||
sb.Append( Port );
|
||||
sb.Append( "/" );
|
||||
}
|
||||
|
||||
private UriBuilder ub;
|
||||
|
||||
/// <summary>
|
||||
/// 获取 UriBuilder 对象
|
||||
/// </summary>
|
||||
public UriBuilder UriBuilder {
|
||||
get {
|
||||
if (ub == null) {
|
||||
ub = new UriBuilder();
|
||||
ub.Scheme = this.Scheme;
|
||||
ub.UserName = this.UserName;
|
||||
ub.Password = this.Password;
|
||||
ub.Host = this.Host;
|
||||
ub.Port = this.Port;
|
||||
ub.Path = this.Path;
|
||||
ub.Query = this.Query;
|
||||
ub.Fragment = this.Fragment;
|
||||
}
|
||||
return ub;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 完整的网址路径,包括http前缀以及query string等所有信息;相当于直接拷贝浏览器地址栏的网址。
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override String ToString() {
|
||||
return UriBuilder.Uri.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回编码过(Server.UrlEncode)的完整 url
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public String EncodeUrl {
|
||||
get {
|
||||
return HttpContext.Current.Server.UrlEncode( this.ToString() );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user