1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
//
// System.Web.UI.BaseParser.cs
//
// Authors:
// Duncan Mak (duncan@ximian.com)
// Gonzalo Paniagua Javier (gonzalo@ximian.com)
//
// (C) 2002 Ximian, Inc. (http://www.ximian.com)
//
using System;
using System.Collections;
using System.IO;
using System.Web;
using System.Web.Compilation;
using System.Web.Configuration;
using System.Web.Util;
namespace System.Web.UI
{
public class BaseParser
{
HttpContext context;
string baseDir;
string baseVDir;
ILocation location;
CompilationConfiguration compilationConfig;
internal string MapPath (string path)
{
return MapPath (path, true);
}
internal string MapPath (string path, bool allowCrossAppMapping)
{
if (context == null)
throw new HttpException ("context is null!!");
return context.Request.MapPath (path, BaseVirtualDir, allowCrossAppMapping);
}
internal string PhysicalPath (string path)
{
if (Path.DirectorySeparatorChar != '/')
path = path.Replace ('/', '\\');
return Path.Combine (BaseDir, path);
}
internal bool GetBool (Hashtable hash, string key, bool deflt)
{
string val = hash [key] as string;
if (val == null)
return deflt;
hash.Remove (key);
bool result = false;
if (String.Compare (val, "true", true) == 0)
result = true;
else if (String.Compare (val, "false", true) != 0)
ThrowParseException ("Invalid value for " + key);
return result;
}
internal static string GetString (Hashtable hash, string key, string deflt)
{
string val = hash [key] as string;
if (val == null)
return deflt;
hash.Remove (key);
return val;
}
internal void ThrowParseException (string message)
{
throw new ParseException (location, message);
}
internal void ThrowParseException (string message, Exception inner)
{
throw new ParseException (location, message, inner);
}
internal ILocation Location {
get { return location; }
set { location = value; }
}
internal HttpContext Context {
get { return context; }
set { context = value; }
}
internal string BaseDir {
get {
if (baseDir == null)
baseDir = MapPath (BaseVirtualDir, false);
return baseDir;
}
}
internal virtual string BaseVirtualDir {
get {
if (baseVDir == null)
baseVDir = UrlUtils.GetDirectory (context.Request.FilePath);
return baseVDir;
}
set { baseVDir = value; }
}
internal CompilationConfiguration CompilationConfig {
get {
if (compilationConfig == null)
compilationConfig = CompilationConfiguration.GetInstance (context);
return compilationConfig;
}
}
}
}
|